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

如何在GitHub Actions YAML中按环境(dev/uat/prd)设置非密钥参数

在GitHub Actions中按环境设置参数并传入构建命令

你可以通过写入全局环境变量或设置输出变量的方式,基于环境条件配置参数,且无需使用环境密钥。这些参数明文存储在YAML中,开发者可直接修改,完全满足你的需求。

问题分析

你之前的写法中,每个step的env仅对当前step的run命令生效,后续step无法读取到ans的值。因此需要将参数设置为全局可用的变量。

方案一:写入全局环境变量(推荐)

通过echo "VAR=value" >> $GITHUB_ENV将参数写入GitHub Actions的全局环境,后续所有step都能直接调用该变量。

# 第一步:根据环境设置全局参数
- name: Set environment-specific parameters
  run: |
    case "${{ github.event.inputs.environment }}" in
      dev)
        echo "ans=20" >> $GITHUB_ENV
        ;;
      uat)
        echo "ans=30" >> $GITHUB_ENV
        ;;
      prd)
        echo "ans=40" >> $GITHUB_ENV
        ;;
      *)
        echo "ans=10" >> $GITHUB_ENV # 可选:设置默认值
        ;;
    esac

# 第二步:在构建命令中使用参数
- name: Run build with environment parameter
  run: |
    # 替换为你的实际构建命令,例如前端项目的npm构建
    npm run build -- --custom-param=$ans
    # 验证参数是否生效
    echo "Build completed with ans=$ans"

方案二:使用多step+if条件(贴近你的初始思路)

如果你更倾向于用多个带if的step来分别设置参数,只需将参数写入全局环境即可:

- name: Set dev parameters
  if: ${{ github.event.inputs.environment == 'dev' }}
  run: echo "ans=20" >> $GITHUB_ENV

- name: Set uat parameters
  if: ${{ github.event.inputs.environment == 'uat' }}
  run: echo "ans=30" >> $GITHUB_ENV

- name: Set prd parameters
  if: ${{ github.event.inputs.environment == 'prd' }}
  run: echo "ans=40" >> $GITHUB_ENV

- name: Set default parameters
  if: ${{ !contains(fromJSON('["dev", "uat", "prd"]'), github.event.inputs.environment) }}
  run: echo "ans=10" >> $GITHUB_ENV

# 构建step调用参数
- name: Run build
  run: |
    echo "Using parameter ans=$ans in build"
    # 实际构建命令示例
    yarn build --env ans=$ans

方案三:使用输出变量(跨step/job传递)

如果需要在跨job的场景中传递参数,可以使用输出变量:

- name: Set parameter output
  id: set_param
  run: |
    case "${{ github.event.inputs.environment }}" in
      dev) echo "ans=20" >> $GITHUB_OUTPUT ;;
      uat) echo "ans=30" >> $GITHUB_OUTPUT ;;
      prd) echo "ans=40" >> $GITHUB_OUTPUT ;;
      *) echo "ans=10" >> $GITHUB_OUTPUT ;;
    esac

- name: Run build with output parameter
  run: |
    # 通过steps.set_param.outputs.ans获取参数
    npm run build -- --ans=${{ steps.set_param.outputs.ans }}

以上三种方式都无需使用环境密钥,参数明文存储在YAML文件中,开发者可直接修改调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 04:15:23