如何将GitHub Actions手动运行与PR关联

4
出于种种原因,我需要通过在PR评论中提及机器人(我使用ProBot)来手动触发GitHub Actions运行。我已经通过将启动设置为on: workflow_dispatch并调用API来找出如何启动工作流。但我遇到的问题是将运行链接到PR。目前,操作仅在没有出现在PR检查部分的情况下开始并完成。
我注意到API上有一个checks create方法,但似乎更适合创建自己的检查套件。我可以使用它来创建一个检查运行,手动监视GitHub Actions进程,并适当地更新检查运行,但这似乎有些过度。我没有在API中看到任何可以实现这一点的内容。可能也可以通过操作本身来完成,但我还没有找到任何信息。
2个回答

5
我认为你不能使用 workflow_dispatch 来添加或更新拉取请求的检查。这似乎已经在社区论坛中回答了类似问题的 这个回复 中得到了确认。
只有以下事件才会添加/更新检查:
- pull_request - pull_request_review - pull_request_review_comment - pull_request_target - push
因此,您的手动操作需要触发其中之一的事件才能运行。根据您的使用情况,可能有许多不同的方式可以做到这一点。仅以一个示例说明,您可以调用API来添加标签,并允许 pull_request 工作流在该类型上执行。
on:
  pull_request:
    types: [labeled, opened, synchronize, reopened]

需要注意的另一点是,API调用(或git push)必须使用PAT而不是GITHUB_TOKEN。 这是为了允许执行更多工作流程


2
好建议!我最终使用了一个标签,然后使用if语句,只在特定标签下运行该工作流程。然后我只需在API中添加标签并快速删除即可。虽然似乎有点绕,但完全符合我的需求。(API可能应该具备此功能),但对我来说完美无缺。 - Alex

1

通过一些变通方法是可能的。首先,您必须确定触发了工作流程的PR。如果您需要使用workflow_dispatch触发事件,则可以将此PR编号作为输入参数传递。否则,您提到您在特定评论上触发此工作流程,因此您还可以使用issue_comment事件,该事件将以github.event.issue.pull_request的形式给出PR编号。

接下来,您必须找出此Pull Request的最新提交。这取决于您的工作流程如何被调用:

最后,您可以使用myrotvorets/set-commit-status-action操作将工作流结果作为对PR最新提交的检查附加。

我写了一篇博客文章,更详细地描述了这个过程:触发GitHub工作流以评论拉取请求


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接