使用github操作部署时如何在node.js进程中设置环境变量

Sih*_*Kim 10 continuous-integration node.js github-actions

我正在尝试使用 github 操作为我的 node.js 服务器构建 CI 管道。

我只需要解决一个问题。我需要设置环境变量,以便我的 node.js 服务器可以通过访问 env 变量process.env

下面是 github 操作工作流文件。

name: Build and Deploy to GKE

on:
  pull_request:
    branches:
      - master

# Environment variables available to all jobs and steps in this workflow
env:
  ENGINE_API_KEY: ${{ secrets.ENGINE_API_KEY }}

jobs:
  setup-build-publish-deploy:
    name: Setup, Build, Publish, and Deploy
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v2

      - name: Apollo Schema Update
        env:
          ENGINE_API_KEY: ${{ secrets.ENGINE_API_KEY }}
        run: |
          sudo npm install
          sudo npm install -g apollo
          sudo npm run dev &
          sleep 3
          sudo apollo service:push --serviceURL=http://auth-cluster-ip-service --serviceName=auth --tag=master --endpoint=http://localhost:3051

Run Code Online (Sandbox Code Playgroud)

我曾尝试在工作流级别和作业级别都声明环境变量,但是当 I 时console.log(process.env.ENGINE_API_KEY),它返回undefined.

我也试过ENGINE_API_KEY=$ENGINE_API_KEY npm run dev &代替npm run dev &. 这适用于我的 macbook,但使用 github 操作,它仍然返回undefined.

(我确实在设置中存储了 ENGINE_API_KEY -> 秘密。对其他变量工作正常)

kac*_*ow6 13

创建一个.env可由您的节点服务器读取的文件,并以这种方式传递您的存储库机密。这应该在您的结帐步骤之后完成:

    - name: create env file
      run: |
        touch .env
        echo ENGINE_API_KEY =${{ secrets.ENGINE_API_KEY }} >> .env
Run Code Online (Sandbox Code Playgroud)

  • `env` 指令具有本地化到 Github Actions 工作流程的特定行为(这是 Github Actions 的限制,而不是 dotenv):要在工作流程文件中使用环境变量的值,您应该使用 `env` 上下文。如果您想在运行程序内部使用环境变量的值,可以使用运行程序操作系统的正常方法来读取环境变量。https://docs.github.com/en/actions/reference/environment-variables (2认同)