【发布时间】: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_REF:docs.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/main。 docs.github.com/en/actions/reference/….
标签: github github-actions