【问题标题】:How to set environment attribute dynamically in a workflow?如何在工作流中动态设置环境属性?
【发布时间】:2021-05-24 17:20:03
【问题描述】:

在我的存储库的设置中,我创建了 2 个环境:开发和生产。我也有2个同名的分支。我希望我的工作流在相应的环境中执行(以便获取正确的 git 机密)。

这就是我所拥有的:

jobs:
  branch-based-execution:
    name: Run external workflow
    environment: ${{ github.ref }}
    runs-on: ubuntu-latest
    steps:
      - name: Echo env var
        env:
          my_var: ${{ secrets.my_var }}
        shell: bash
        run: echo $my_var

但是,我在环境行收到以下错误:

无法识别的命名值:'github'。位于表达式中的位置 1:github.ref

看起来我不能使用 github 上下文来设置环境属性。有没有办法动态设置工作流的环境?谢谢!

【问题讨论】:

  • 您能否澄清一下您的 GitHub 存储库中的两个环境是什么意思?仅供参考:github.ref 让我感到困惑,因为我以为您指的是默认环境变量中的 GITHUB_REFdocs.github.com/en/actions/reference/…
  • @astrochun 是的,如果您在存储库中转到设置 > 环境,您可以创建新环境。我创造了其中的两个。这些环境允许您将 git 机密设置到特定环境,然后在您的工作流程中您可以引用环境名称并访问这些特定机密。(docs.github.com/en/actions/reference/environments) 我使用 github.ref 而不是 GITHUB_REF 因为 GITHUB_REF 仅可用一次跑步者起来了(因为它是一个环境变量)。对于其他一切,您必须使用 github 上下文变量,例如 github.ref
  • 啊,在那种情况下,我认为您应该只提供环境名称。见:docs.github.com/en/actions/reference/…
  • 是的,但我有 2 个分支,我想在两个分支中拥有相同的工作流文件。这就是为什么我想在环境名称中放入一个动态值,但它不接受它。
  • 如果您希望它在同一个工作流文件中,那么您可以考虑将if 语句与github.ref 一起使用。并将您的环境设置为适当的名称。这指的是例如ref/heads/maindocs.github.com/en/actions/reference/….

标签: github github-actions


【解决方案1】:

You can set it dynamically,您只需要指定您正在设置的名称

jobs:
  branch-based-execution:
    name: Run external workflow
    environment:
      name: ${{ github.ref }}

【讨论】:

    猜你喜欢
    • 2011-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-26
    • 1970-01-01
    • 2023-03-19
    • 2020-11-16
    相关资源
    最近更新 更多