如何在AWS自托管GitHub Actions运行器中使用GitHub环境变量?
解决AWS自托管GitHub Actions运行器无法获取GitHub环境变量的问题
排查与修复步骤
- 修正环境变量引用方式:如果你的NODE_ENV是在GitHub dev环境中添加的普通环境变量(而非加密密钥),要改用
${{ vars.NODE_ENV }}替代${{ secrets.NODE_ENV }}。Secrets仅用于存储敏感加密信息,普通环境变量需通过vars集合调用。 - 指定工作流关联dev环境:必须在对应的job配置中添加
environment: dev,否则GitHub不会自动加载该环境下的变量。示例配置:jobs: deploy: environment: dev # 关键:明确使用dev环境 runs-on: self-hosted steps: - name: start pm2 service env: NODE_ENV: ${{ vars.NODE_ENV }} run: NODE_ENV=$NODE_ENV pm2 start ./bin/www --name 'backend' - 优化PM2变量传递逻辑:可以直接在启动命令中注入变量,或者通过PM2配置文件定义环境变量,避免shell解析异常:
# 方式1:直接在命令中注入 run: pm2 start ./bin/www --name 'backend' --env ${{ vars.NODE_ENV }} # 方式2:使用PM2配置文件 # 先创建ecosystem.config.js: # module.exports = { # apps: [{ # name: 'backend', # script: './bin/www', # env: { # NODE_ENV: '${{ vars.NODE_ENV }}' # } # }] # } # 工作流中执行:pm2 start ecosystem.config.js - 排查自托管运行器本地干扰:确认AWS上的自托管运行器本地没有同名的NODE_ENV环境变量,防止覆盖GitHub传递的变量。可在工作流中添加打印步骤验证变量是否正确传递:
- name: 验证NODE_ENV变量 env: NODE_ENV: ${{ vars.NODE_ENV }} run: echo "当前NODE_ENV值:$NODE_ENV"
内容的提问来源于stack exchange,提问作者Chenhua Fan
相关产品推荐
相关产品推荐

