语境
公共存储库中的可重用工作流程可以通过附加引用来调用,该引用可以是 SHA、发布标签或分支名称,例如:
{owner}/{repo}/.github/workflows/{filename}@{ref}
Github文档指出:
当调用者工作流触发可重用工作流时,github 上下文始终与调用者工作流关联。
问题
由于 github 上下文始终与调用者工作流关联,因此可重用工作流无法访问引用,例如 tag v1.0.0。但是,当可重用工作流需要签出存储库以便使用复合操作时,了解引用非常重要。
例子
假设调用者工作流正在分支内执行,并调用可重用工作流的main引用:v1.0.0.
name: Caller workflow
on:
workflow_dispatch:
jobs:
caller:
uses: owner/public-repo/.github/workflows/reusable-workflow.yml@v1.0.0
Run Code Online (Sandbox Code Playgroud)
以下是使用复合操作的可重用工作流程:
name: reusable workflows
on:
workflow_call:
jobs:
first-job:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3.1.0
with:
repository: owner/public-repo
ref: ${{ github.ref_name }}
- name: composite action
uses: ./actions/my-composite-action
Run Code Online (Sandbox Code Playgroud)
在上面的代码片段中,${{ github.ref_name }}是main而不是v1.0.0因为 github 上下文始终与调用者工作流程相关联。因此,复合动作代码是基于main而不是基于v1.0.0. 然而,打电话的人想要v1.0.0。因此我的问题是:可重用工作流程如何能够访问调用者给出的引用?