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

GitHub Workflow中如何按所选Environment读取Runner环境变量值?

解决GitHub Workflow中根据所选环境读取对应变量的问题

你遇到的问题是因为workflow_dispatch的输入默认值是在触发工作流前解析的,这时候还没关联到你选择的Environment,所以${{ env.Runner }}无法被正确解析,直接以字符串形式显示。要实现根据所选Environment自动读取对应环境的Runner变量,需要调整工作流的结构,具体步骤如下:

修正思路

  1. 移除GithubRunner这个输入项(或者设为可选),因为我们要根据选择的Environment自动获取对应变量,不需要用户手动输入
  2. 在工作流的jobs部分,将environment指定为用户选择的输入值,这样工作流会自动关联到对应的环境,加载该环境下的变量
  3. 之后在job的步骤中,直接使用${{ env.Runner }}就能拿到对应环境的Runner值

修改后的完整代码示例

name: 'Github Workflow'
run-name: 'Terraform Plan-Apply'

on:
  workflow_dispatch:
    inputs:
      Configuration:
        description: 'Deployment Group'
        required: true
        type: choice
        options:
          - Applications
          - KeyVault
          - Synapse
          - Databricks
      Environment:  
        description: 'Environment'
        required: true
        type: choice
        options:
          - Dev
          - QA
          - Prod

jobs:
  terraform-deploy:
    name: 'Terraform Plan & Apply'
    environment: ${{ github.event.inputs.Environment }} # 关联到所选环境
    runs-on: ${{ env.Runner }} # 直接使用对应环境的Runner变量作为运行器
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Verify Runner variable
        run: echo "Using Runner from environment: ${{ env.Runner }}"
        # 这里会正确输出对应环境的Runner变量值

      # 后续添加Terraform相关步骤,比如init、plan、apply等

关键说明

  • 触发工作流时选择某个Environment(比如Dev),工作流会自动关联到GitHub Settings中创建的Dev环境,加载该环境下的所有变量(包括你设置的Runner)
  • 关联环境后,env.Runner就会被正确赋值为对应环境的变量值,而不是显示表达式字符串
  • 如果你需要用env.Runner作为运行器(即runs-on的值),直接写成runs-on: ${{ env.Runner }}即可,前提是你的Runner变量值是GitHub支持的运行器名称(比如自托管运行器的名称)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 07:35:20