我想用可重用的工作流程抽象一些 GitHub 操作。
为了做到这一点,我需要以以下格式调用我新定义的可调用工作流程{owner}/{repo}/{path}/{filename}@{ref}
例如(来自文档)
jobs:
call-workflow-1:
uses: octo-org/this-repo/.github/workflows/workflow-1.yml@172239021f7ba04fe7327647b213799853a9eb89
call-workflow-2:
uses: octo-org/another-repo/.github/workflows/workflow-2.yml@v1
Run Code Online (Sandbox Code Playgroud)
然而,实际上,我正在我的分支 上工作,some-branch-name我正在处理我的workflow-1.yml文件,并且我希望能够按照当前分支中定义的方式运行我的操作,给定
`{ref} 可以是 SHA、发布标签或分支名称。
看来我需要使用
jobs:
call-workflow-1:
uses: octo-org/this-repo/.github/workflows/workflow-1.yml@some-branch-name
Run Code Online (Sandbox Code Playgroud)
但是,我希望这适用于任何分支机构,所以
jobs:
call-workflow-1:
uses: octo-org/this-repo/.github/workflows/workflow-1.yml@${{ github.ref }}
Run Code Online (Sandbox Code Playgroud)
但是,事实证明这是不可能的,因为表达式不能在uses属性中使用。
我怎样才能实现这个目标?
TWi*_*Rob 26
自 2022 年 1 月 25 日起现已支持此功能。
博客中的用法示例:
jobs:
call-workflow-in-local-repo:
uses: ./.github/workflows/workflow-2.yml
Run Code Online (Sandbox Code Playgroud)
我打开的问题中的一个现实生活中的例子: https ://github.com/TWiStErRob/net.twisterrob.healthcheck/pull/28
注意:使用此./语法,可重用工作流定义(.yml文件)和用法(uses来自作业)必须位于同一存储库中。请参阅:此处了解更多信息。
Gui*_*urd 14
(查看TWiStErRob的答案以了解更多详细信息)。
之前的答案(2022 年更新之前)
正如您所说:目前无法完成,因为 Github Actions 不支持带有uses属性的表达式。
目前还没有解决方法?因为工作流解释器(当您将工作流推送到存储库时还会检查工作流语法)此时无法从表达式中获取值。
如果工作流被解释器识别,它可能会起作用,但它不会出现在选项卡上,Actions因为它被认为是无效的。
目前,您只能在符号后面使用tag,branch ref或,就像使用任何操作一样。commit hash@
| 归档时间: |
|
| 查看次数: |
10010 次 |
| 最近记录: |