【问题标题】:GitHub Context Variables Not Evaluating for Reusable Workflow ReferenceGitHub 上下文变量未评估可重用工作流参考
【发布时间】:2021-12-12 15:51:31
【问题描述】:

我目前正在尝试构建一个可重用的工作流,其中可重用的工作流通过 on: workflow_call 触发器等正确设置。

当我调用工作流时,我需要能够使用当前分支或提交动态填充共享工作流文件引用。如果可能的话,我还想使用当前的 org/repo 动态地填充组织和 repo,但这并不重要。因此,我对其他工作流程的调用如下所示:

jobs:
  call-build-and-test:
    uses: ${{github.repository}}/.github/workflows/cicd-build-and-test.yml@${{github.sha}}

不幸的是,两个上下文变量 github.repositorygithub.sha 没有得到评估,并且工作流在运行时失败,说明在字符串的开头需要一个有效的组织和 repo,或者,如果组织和 repo 是硬编码的,因此它们是有效的,然后它指出无法找到提交,因为它也没有正确评估。

谁能解释为什么上下文变量没有得到评估?如果这是不可能的,我该如何动态填充这些值?对它们进行硬编码是不够的,因为它们需要针对当前分支上的版本执行,因为主分支还没有合并工作流,所以不能像 Github 文档中的示例那样简单地硬编码为:

https://docs.github.com/en/actions/learn-github-actions/reusing-workflows#calling-a-reusable-workflow

我相信使用诸如github.* 之类的上下文变量是正确的方法,因为环境变量仅在执行作业的shell 范围内可用,但是我也尝试过环境语法,即GITHUB_REPOSITORY,并且GITHUB_SHA 有同样的问题。

【问题讨论】:

  • 您可以为此使用 inouts。

标签: github github-actions


【解决方案1】:

目前无法完成,因为 Github Actions 不支持具有uses 属性的表达式

没有解决方法(还没有?)因为工作流解释器(当您将工作流推送到存储库时也会检查工作流语法)此时无法从表达式中获取值.

如果工作流被解释器识别,它可能会起作用,但它不会出现在 Actions 选项卡上,因为它被认为是无效的。

目前,您只能在@ 符号后使用tagbranch refcommit hash,与使用任何操作相同。因此,目前必须对其进行硬编码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 2022-10-23
    • 2010-10-07
    • 2016-07-05
    • 2019-01-22
    • 1970-01-01
    • 2023-03-29
    相关资源
    最近更新 更多