You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过GitHub Actions将GitHub密钥传入Google App Engine Java后端环境变量

问题:GitHub Actions部署App Engine时环境变量未正确解析

我用Gradle搭建了Spring Boot API后端,部署在Google App Engine上,通过google-github-actions/deploy-appengine@v0.2.0动作部署。把第三方API密钥存在GitHub仓库密钥里,但部署后环境变量始终未正确解析——测试端点返回的是未替换的$DUMMY_ENV_VAR字符串,第三方API密钥也无法正常使用。

我的app.yaml配置:

runtime: java17
instance_class: F2
env_variables:
  EXT_API_KEY: $EXT-API-KEY
  DUMMY_ENV_VAR: $DUMMY_ENV_VAR

GitHub Actions配置(已尝试过注释/启用env字段、调整app.yaml引号等,均无效):

name: Deploy Project to App Engine

on:
  push:
    branches:
      - main

  workflow_dispatch:

# env: 
#   EXT_API_KEY: ${{ secrets.EXT_API_KEY }}
#   DUMMY_ENV_VAR: ${{ secrets.GCP_DUMMY_ENV_VAR }}

  
jobs:
  deploy:
    name: Deploying to Google Cloud
    runs-on: ubuntu-latest

    steps:
      - name: Checkout
        uses: actions/checkout@v2

      - name: Deploy to App Engine
        id: deploy
        uses: google-github-actions/deploy-appengine@v0.2.0
        env: 
          EXT_API_KEY: ${{ secrets.EXT_API_KEY }}
          DUMMY_ENV_VAR: ${{ secrets.GCP_DUMMY_ENV_VAR }}
        with:
        #   env_vars: |-
        #     EXT_API_KEY=${{ env.EXT_API_KEY }}
        #     DUMMY_ENV_VAR=${{ env.GCP_DUMMY_ENV_VAR }}
          deliverables: app.yaml
          version: v1
          credentials: ${{ secrets.GCP_SERVICE_CREDENTIALS }}

      - name: Test
        run: curl "${{ steps.deploy.outputs.url }}"


解决方案

核心问题

App Engine不会自动解析app.yaml里的$VAR占位符,这些字符串会被直接当作环境变量的值。而GitHub Actions工作流里的env字段仅作用于当前步骤,不会自动传递给App Engine部署配置,必须通过deploy-appengine动作的env_vars参数明确注入。

步骤1:调整app.yaml

可以注释或移除env_variables块(部署时会被动态注入的变量覆盖),或者保留空结构:

runtime: java17
instance_class: F2
# 部署时会通过GitHub Actions注入环境变量,此处可留空或注释
# env_variables:

步骤2:修改GitHub Actions工作流

启用deploy-appengine动作的env_vars参数,直接传入仓库密钥:

name: Deploy Project to App Engine

on:
  push:
    branches:
      - main
  workflow_dispatch:

jobs:
  deploy:
    name: Deploying to Google Cloud
    runs-on: ubuntu-latest

    steps:
      - name: Checkout
        uses: actions/checkout@v2

      - name: Deploy to App Engine
        id: deploy
        uses: google-github-actions/deploy-appengine@v0.2.0
        with:
          deliverables: app.yaml
          version: v1
          credentials: ${{ secrets.GCP_SERVICE_CREDENTIALS }}
          # 直接在这里传入环境变量,每行一个key=value
          env_vars: |-
            EXT_API_KEY=${{ secrets.EXT_API_KEY }}
            DUMMY_ENV_VAR=${{ secrets.GCP_DUMMY_ENV_VAR }}

      - name: Test
        run: curl "${{ steps.deploy.outputs.url }}"

验证方法

部署完成后:

  1. 登录Google Cloud Console,进入App Engine服务详情页,查看环境变量是否正确设置;
  2. 通过Spring Boot的测试端点返回System.getenv("DUMMY_ENV_VAR")的值,确认已替换为实际密钥内容。

内容的提问来源于stack exchange,提问作者jar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 09:57:43