将存储库环境变量传递给 Github 操作中的可重用工作流程

weh*_*dox 3 github-actions

我在存储库中定义了一些环境变量DEV/QA/PROD,并设置了一组变量,即 a、b、c,我想将它们传递给可重新启动的工作流程。如何实现这一目标?

我已尝试如下,但在调用的工作流程中无法访问变量值。

根据 GitHub Actions 文档:

要在多个工作流中重用变量,请在组织、存储库或环境级别设置它们,并使用 vars 上下文引用它们。有关详细信息,请参阅“变量”和“上下文”。

但它似乎不起作用。

jobs:
  call-workflow-passing-data:
    uses: octo-org/example-repo/.github/workflows/reusable-workflow.yml@main
    with:
      config-path: .github/labeler.yml
      deploy-a: ${{ vars.a}}
      deploy-b: ${{ vars.b }}
    secrets:
      envPAT: ${{ secrets.envPAT }}
Run Code Online (Sandbox Code Playgroud)

在目标工作流程中,当我使用它时${{ inputs.deploy-a }},它没有给出任何价值。

任何帮助,将不胜感激。

Nil*_*nde 5

我自己也遇到过这个问题,并且非常努力地寻找其原因。

我发现无法为调用可重用工作流程的工作流程设置环境。这意味着,如果您为每个环境(开发、生产等)定义了环境变量,则这些变量将无法通过使用范围来使用vars

我的解决方案是将environment参数发送到可重用工作流程并使用那里提取变量vars。虽然没有我想要的那么漂亮,但它确实有效。

从我的可重用工作流程中:

on:
  workflow_call:
    inputs:
      environment:
        type: string
        required: true
env:
  deploy-a: ${{ vars.a }}
  deploy-b: ${{ vars.b }}
jobs:
  do-something:
    environment: ${{ inputs.environment }}
Run Code Online (Sandbox Code Playgroud)

${{ env.deploy-a }}然后您可以在工作流程的其余部分中使用。