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

Github Actions部署GAE时create-envfile生成.env文件未生效问题

问题成因
  • Github Actions中每个Job运行在独立的临时实例中,不同Job的文件系统互不共享。你将生成.env的逻辑放在单独的create-envfileJob中,生成的文件仅存在于该Job的运行环境,执行部署的buildJob完全无法访问该文件。
  • 即使将生成.env的步骤放在同一个Job中,也需要注意执行顺序:actions/checkout操作会拉取仓库代码覆盖当前工作目录,若先生成.env再执行代码拉取,生成的文件会被拉取操作覆盖。
解决方案

直接调整Workflow配置,将生成.env的步骤合并到buildJob中,放在代码拉取之后、部署操作之前即可。修改后的参考配置如下:

name: CI

on:
  push:
    branches: [ deploy ]
  pull_request:
    branches: [ deploy ]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2

      - name: Make envfile
        uses: SpicyPizza/create-envfile@v1
        with:
          envkey_DEBUG: False
          envkey_DATABASE_URL: ${{ secrets.DATABASE_URL }}
          envkey_USER: ${{ secrets.USER }}
          envkey_PASSWORD: ${{ secrets.PASSWORD }}
          envkey_DATABASE_NAME: ${{ secrets.DATABASE_NAME }}
          file_name: .env

      - name: Initialize Google Cloud SDK
        uses: zxyle/publish-gae-action@master
        with:
          service_account_email: ${{ secrets.GCP_SA_EMAIL }}
          service_account_key: ${{ secrets.GCP_SA_KEY }}
          project_id: ${{ secrets.PROJECT_ID }}
          gae_variables: ${{ secrets.GAE_VARIABLES }}

      - name: Publish app to Google App Engine
        run: |
          gcloud auth activate-service-account ${{ secrets.GCP_SA_EMAIL }} --key-file=client-secret.json
          gcloud config set project ${{ secrets.PROJECT_ID }}
          gcloud -q app deploy app.yaml --promote

如果确实有跨Job传递文件的需求,也可以使用上传/下载制品的官方Action实现文件传输,但该场景下直接合并步骤成本最低,没有必要额外增加传输逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 07:15:04