我想为每次成功的提交运行GitHub Actions工作流(例如,在所有检查套件都成功运行之后)。
似乎check_suite事件将针对每个单独的检查套件被触发,并且不包含有关其他套件的信息。我要等待所有注册的检查套件。
status事件似乎正是我想要的:
状态可以包括上下文,以指示哪些服务正在提供该状态。例如,您可能具有带有ci上下文的连续集成服务推送状态,以及带有安全性上下文的安全审核工具推送状态。然后,您可以使用组合状态端点检索提交的整个状态。
但是status
的生活与check_suites
事件完全无关,现在大多数CI服务都使用check_suites
(包括GitHub Actions本身),而不是status
。 / p>
如何使用GitHub Actions工作流程来检查所有check_suites是否已完成并且提交是否已成功通过所有检查和测试?
答案 0 :(得分:0)
您可以使用GitHub API列出属于引用https://octokit.github.io/rest.js/#octokit-routes-checks-list-suites-for-ref的检查套件。
因此,在您的操作(由check_suite
触发)中,您可以列出当前引用的所有套件,检查它们是否都成功,然后运行代码。
如果您要构建JavaScript动作,它可能看起来像这样:
import * as github from "@actions/github";
const response = await client.checks.listSuitesForRef({
owner: github.context.repo.owner,
repo: github.context.repo.repo,
ref: sha
});
const passes = response.data.check_suites.every(...)
if (passes) { ... }
此方法的主要缺点在于,该操作本身就是属于当前提交的检查套件,因此它会出现在response.data.check_suites
中(在这一点上永远不会成功...因为它仍然正在运行!)。我对此部分还没有解决方案...