如何将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获取变量
补充说明:
- 可重用工作流需定义输入参数:确保
reusable.yml中已声明ACCOUNT输入,示例如下:
# reusable.yml 中的输入配置 on: workflow_call: inputs: ACCOUNT: required: true type: string
- 中间Job的作用:
fetch-env-vars专门负责加载指定环境的变量,通过outputs将变量传递给后续Job,完美解决了调用可重用工作流的Job无法直接使用environment的限制。
内容的提问来源于stack exchange,提问作者user20358
相关产品推荐
相关产品推荐

