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

如何将GitHub Actions DEV环境变量传递给可重用工作流

如何将GitHub Actions环境变量传入可重用工作流?

我在GitHub Actions控制台创建了DEV环境,其中包含account_number变量,需要将这个变量传递给可重用工作流的ACCOUNT输入参数。现有主工作流代码如下:

name: Deploying Lambda

on:
  pull_request:
    types: [closed]
    branches:
      - 'dev'

jobs:
  unit-tests-execution:
    # 单元测试任务细节
    ...

  my-job:
    needs: unit-tests-execution
    uses: myorg/myrepo/.github/workflows/reusable.yml@v1.0.0
    with:
      ACCOUNT: <assign the variable account_number from the DEV environment here>

尝试直接在my-job中添加environment: DEV并使用${{ vars.account_number}}赋值时,报错提示environment:不能与uses:一起使用。而且我不想在可重用工作流reusable.yml中配置环境,因为它需要适配不同账号,只需传入账号编号即可。


解决方案:通过中间Job中转环境变量

核心思路是拆分任务:先创建一个专门加载环境变量的Job,将变量输出后,再传递给调用可重用工作流的Job。这样既避开了environment与uses的冲突,也无需修改可重用工作流。

完整主工作流代码:

name: Deploying Lambda

on:
  pull_request:
    types: [closed]
    branches:
      - 'dev'

jobs:
  unit-tests-execution:
    runs-on: ubuntu-latest
    steps:
      - name: Run unit tests
        run: echo "执行单元测试..."

  # 新增中间Job:加载DEV环境变量并输出
  fetch-env-vars:
    needs: unit-tests-execution
    runs-on: ubuntu-latest
    environment: DEV  # 这里可以正常使用environment字段
    outputs:
      account_number: ${{ vars.account_number }}  # 暴露环境变量为输出
    steps:
      - name: 打印账号信息(可选)
        run: echo "DEV环境账号:${{ vars.account_number }}"

  # 调用可重用工作流的Job
  my-job:
    needs: fetch-env-vars
    uses: myorg/myrepo/.github/workflows/reusable.yml@v1.0.0
    with:
      ACCOUNT: ${{ needs.fetch-env-vars.outputs.account_number }}  # 从中间Job获取变量

补充说明:

  1. 可重用工作流需定义输入参数:确保reusable.yml中已声明ACCOUNT输入,示例如下:
# reusable.yml 中的输入配置
on:
  workflow_call:
    inputs:
      ACCOUNT:
        required: true
        type: string
  1. 中间Job的作用:fetch-env-vars专门负责加载指定环境的变量,通过outputs将变量传递给后续Job,完美解决了调用可重用工作流的Job无法直接使用environment的限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 18:32:19