如何在pull request的base分支更新时重新运行Github Actions工作流程

16

当拉取请求的基础分支有新代码推送时,是否可以触发Github Actions工作流程?

详细内容以示例说明:拉取请求分支为feature1,基础分支为development,因此在PR打开后,如果开发分支更新了新代码,是否可以在特性分支feature1上触发工作流程?


你尝试过使用 synchronize 类型的 pull_request_target 事件吗? - GuiFalourd
在大多数正常情况下,您会将更新的目标分支合并到功能分支中,这将重新触发测试。 - DannyB
2
@GuiFalourd,该事件与目标分支无关,而是与来自分叉的PR的目标存储库有关。请参见https://securitylab.github.com/research/github-actions-preventing-pwn-requests/。 - Eyal Roth
2
@Mohamed-Amer 这是一个很好的问题,你找到答案了吗?将特性分支合并到主分支也是“正常”的工作流程,应该可以实现。我们正在寻找可行的选项。同步触发器不够用 :( 'synchronize':当拉取请求的头分支更新时触发。例如,当从基础分支更新头分支时,当向头分支推送新提交时或更改基础分支时。它缺少对基础分支的更新。 - GreenKiwi
2个回答

3

目前没有触发器可以让你这样做。但是,GitHub的分支保护规则中有一个功能旨在解决此问题:在选择“要求合并之前通过状态检查”时,还有一个附加选项“要求在合并之前将分支更新到最新状态”。此设置将阻止合并,如果基础分支的提交没有合并回功能分支,则会自动更新分支。因此,用户将被迫“更新”其分支,从而触发工作流程。

RequireBranchesBeUpToDate


1

正如其他回答者/评论者所指出的那样,基于更新的 PR 目标重新运行作业的事件触发器并不存在。然而,您可以通过更改特性分支顶部的提交哈希来触发对更新目标的重新运行:

git commit --no-edit --amend
git push -f

这样做是可行的,但如果你有另一个从旧的 tip commit 继续的功能分支,当你合并第二个分支时,相同的提交将被视为合并冲突。这种情况通常发生在你为一个较大的功能创建多个小型 PR 的时候,这也是推荐的做法。在将第二个功能分支 PR 提交之前,可以将其基于新提交的 tip 进行变基,但在变基时仍然需要手动处理冲突。

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