使用 octokit 添加对特定 workflow-run/check-suite 的检查

Add check to a specific workflow-run/check-suite using octokit

我有一个带有 Github 操作的项目,它实现了多个工作流,这些工作流可以由单个推送事件触发(取决于路径过滤器)。

因此一次提交的推送可以触发多个工作流,到目前为止一切顺利。

在每个工作流程中,我 运行宁 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 }}"
        }
      });

它就像一个魅力,当触发单个工作流时,但一旦推送触发多个工作流,那么只有 运行s 的第一个显示添加的检查。除了第一个以外的所有其他人都没有显示支票,但也没有错误?

在我尝试 LouisBrunner/checks-action 之前,它遇到了同样的问题,所以我创建了一个问题:https://github.com/LouisBrunner/checks-action/issues/26。但是现在直接使用octokit with github-script action也失败了,感觉问题出在别的地方...

更新:

根据 Gregors 的回答,我尝试通过附加 运行-id 为每个工作流程中的支票赋予不同的名称,我发现每个并行工作流程都将支票添加到 [=45] 的工作流程中=]首先... 所以现在的问题是,如何将其发送到特定的工作流程运行?

according to these docs,没有专门的参数,它似乎使用 head_sha?

自动检测工作流

name: "Custom Script ${{ github.run_id }}",

尝试为您创建的每个支票 运行 设置不同的 Custom Script。我认为具有相同名称的多个检查 运行s 被折叠成只显示最后一个。原因是这样您可以使用相同的名称覆盖提交的状态。

遗憾的是,我发现根本不可能将支票附加到特定的工作流程 -运行 或支票套件。这个问题已经知道一年多了,但他们还没有提供任何解决方案。 See in this thread.

以一家大汽车公司的名义,我现在已经在github的官方反馈表中提交了功能请求。

PS:如果将来会实现该功能,我将在这里创建并接受另一个答案。