自动合并经过验证和测试的GitHub Pull Requests

dgm*_*ltn 7 github github-api

我想自动(即来自Jenkins)合并GitHub拉取请求,该请求已经由一个人批准并且已经过成功测试; 换句话说,当所有这三个复选标记都是绿色时:

这可能吗?我没有找到任何有关GitHub新的"已批准更改"代码审查功能的API文档.

kfb*_*kfb 9

在非待定状态下提交审阅时会触发新的PullRequestReviewEventwebhook.webhook的主体包含该["review"]["state"]字段,approved当所有审阅者都批准了更改时(即,当您在UI中获得绿色的"更改已批准"时).

将此与StatusEvent您的拉取请求的头部SHA相结合以从CI等获取状态检查,然后通过从API请求拉取请求最终检查拉动的"合并能力" :

GET /repos/:owner/:repo/pulls/:number
Run Code Online (Sandbox Code Playgroud)

完成所有这三件事后,您可以将pull请求与以下内容合并:

PUT /repos/:owner/:repo/pulls/:number/merge
Run Code Online (Sandbox Code Playgroud)

和适当的有效载荷参数 请注意,您需要Accept: application/vnd.github.polaris-preview+json一些有效负载参数,因为它们处于预览期.


Von*_*onC 6

官方文档:“管理存储库中拉取请求的自动合并”。


现在(2020 年 12 月,4 年后)可用:

拉取请求自动合并公开测试版

拉取请求自动合并现在作为公开测试版推出!

使用自动合并,当满足所有合并要求时,可以自动合并拉取请求。无需再等待冗长的检查完成,这样您就可以按下合并按钮!

要使用自动合并,存储库维护者或管理员必须首先切换存储库设置以允许自动合并(请参阅步骤)。
然后,任何具有写入权限的用户都可以通过导航到拉取请求页面来启用或禁用自动合并。

请记住,自动合并仅适用于针对具有必需审查或必需状态检查的分支的拉取请求,因此仅适用于 Team 和 GitHub Enterprise Cloud 计划的公共存储库和私有存储库。

了解有关拉取请求自动合并的更多信息。


2021 年 2 月更新:

拉取请求自动合并现已普遍可用

通过自动合并,可以将拉取请求设置为在满足所有合并要求时自动合并。
无需再等待缓慢的 CI 作业或测试完成,这样您就可以单击合并按钮!

要使用自动合并,首先让管理员在存储库设置中允许自动合并

然后要启用自动合并,请导航到 GitHub.com 或 GitHub Mobile 上的拉取请求,然后点击按钮以启用。

PR 自动合并在行动

请注意,只有具有合并权限的用户才能启用自动合并,并且当存在未满足的合并要求时,例如缺少批准或未通过所需的状态检查。

GraphQL API 将在本周晚些时候推出。该拉请求网络挂接事件现在还包括指示时自动合并启用或禁用的操作。

了解有关拉取请求自动合并的更多信息


然而,正如教父评论中提到

问题在于它不进行自动更新。

所以一旦你的 repo 有“ branches must be up-to-date”和其他一些 PR 合并,这个“ auto-merge”就不再起作用了。

它应该像 Gitlab 一样被称为:“ merge when pipeline succeeds”,至少它没有那么混乱...... –


2021 年 8 月更新:

维护人员现在可以管理存储库中自动合并的可用性

维护人员现在可以管理存储库级别的“允许自动合并”设置。
此设置在默认情况下处于关闭状态,用于控制自动合并是否可用于存储库中的拉取请求。
以前,只有管理员可以管理此设置。

此外,现在可以使用“创建存储库”和“更新存储库”REST API来控制此设置。