使用GitHub Action部署Django到Google App Engine报JSON解析错误
问题解决步骤
1. 修正Google Deploy Action的参数适配问题
你升级到v0.4.0版本的deploy-appengine action后,旧参数credentials已经被弃用,替换为service_account_key,修改deploy步骤的配置:
- name: Deploy to App Engine id: deploy uses: google-github-actions/deploy-appengine@v0.4.0 with: project_id: ${{ secrets.GCP_PROJECT_ID }} deliverables: app.yaml # 如果app.yaml在src目录下,此处改为src/app.yaml service_account_key: ${{ secrets.GOOGLE_APPLICATION_CREDENTIALS }} version: v1
2. 修复服务账号凭证的存储问题
Error: Unexpected token � in JSON at position 0 90%以上的场景是GitHub Secrets中存储的服务账号JSON内容异常导致,按以下步骤排查:
- 确认你存储
GOOGLE_APPLICATION_CREDENTIALSSecret时,直接粘贴的是JSON文件的原始纯文本内容,没有做base64编码。旧教程要求的base64编码仅适配极早期的action版本,新版不需要编码,编码后的内容会直接导致JSON解析失败 - 确认你复制JSON内容时没有带UTF-8 BOM头:用VS Code打开服务账号JSON文件,点击右下角的编码选项,选择「UTF-8」(不要选带BOM的版本),重新复制内容更新GitHub Secrets即可
3. 修正路径&语法错误
- 你全局配置了
working-directory: src,如果app.yaml存放在src目录下,需要把deliverables的值改为src/app.yaml,否则action会在仓库根目录找不到配置文件 - 最后test步骤的curl命令缺少闭合双引号,修改为:
- name: Test run: curl "${{ steps.deploy.outputs.url }}"
关于app.yaml的异常说明
你当前的app.yaml配置完全符合Google App Engine的规范,不需要配置on触发器,工作流的触发规则是GitHub Actions的配置项,和app.yaml无关,之前的app.yaml报错基本是路径不对或者缩进异常导致,当前贴出的配置没有问题。
内容的提问来源于stack exchange,提问作者Camille Dunning
相关产品推荐
相关产品推荐

