我有一个带有 Github Actions 的项目,它实现了可以由单个推送事件触发的多个工作流(取决于路径过滤器)。
因此,一次提交的推送可以触发多个工作流,到目前为止一切都很好。
在我正在运行actions/github-script
的每个工作流程中,通过以下步骤创建动态运行检查:
- uses: actions/github-script@v4
with:
github-token: ${{ inputs.github-token }}
script: |
const date = new Date();
const check = await github.checks.create({
owner: "${{ steps.vars.outputs.owner }}",
repo: "${{ steps.vars.outputs.repo }}",
name: "Custom Script",
started_at: date.toISOString(),
completed_at: date.toISOString(),
head_sha: "${{ inputs.sha }}",
external_id: "${{ github.run_id }}",
status: "completed",
conclusion: "success",
output: {
title: "Some funny title",
summary: "Build successful",
text: "Image pushed to https://${{ inputs.region }}.console.aws.amazon.com/ecr/repositories/private/${{ inputs.customer-id }}/modix/base/${{ inputs.image }}"
}
});
当触发单个工作流时,它就像一个魅力一样工作,但是一旦推送触发多个工作流,那么只有第一个运行的工作流显示添加的检查。所有其他人,但第一个不显示检查但也没有错误?
在我尝试之前LouisBrunner/checks-action
,它有同样的问题,所以我创建了一个问题:https ://github.com/LouisBrunner/checks-action/issues/26 。但是现在直接使用带有 github-script 操作的 octokit 也失败了,感觉问题出在其他地方......
更新:
根据 Gregors 的回答,我尝试通过附加运行 ID 在每个工作流中为检查赋予不同的名称,我发现每个并行工作流都将检查添加到首先运行的工作流中......所以现在的问题是,如何将其发送到特定的工作流运行?
根据这些文档,没有专门的参数,似乎它使用head_sha
?自动检测工作流
name: "Custom Script ${{ github.run_id }}",