1

我有一个带有 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 }}",

在此处输入图像描述

4

2 回答 2

1

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

于 2021-09-14T17:54:46.383 回答
0

可悲的是,我发现根本不可能将检查附加到特定的工作流程运行或检查套件。这个问题已经知道一年多了,但他们还没有提供任何解决方案。请参阅此线程

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

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

于 2021-09-15T06:53:14.080 回答