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

时间:2016-11-02 23:12:53

标签: github github-api

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

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

6 个答案:

答案 0 :(得分:9)

在非待定状态下提交审核时会触发新的PullRequestReviewEvent webhook。 webhook的正文包含["review"]["state"]字段,当所有审阅者都批准了更改时(即当您获得绿色"已批准更改"在用户界面中打勾)时,该字段将为approved

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

GET /repos/:owner/:repo/pulls/:number

一旦完成了所有这三件事,您可以merge the pull request使用:

PUT /repos/:owner/:repo/pulls/:number/merge

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

答案 1 :(得分:2)

我写了一个可以做到这一点的应用程序。它响应审阅,标记和提交状态/检查事件,并在合并按钮为绿色时进行合并。

当合并按钮为绿色时它会合并,这意味着您可以在GitHub设置中配置可合并PR的要求,而无需为应用编写单独的配置。

Mergery是:

  • 免费,包括用于私人存储库。
  • 快。它是事件驱动的,没有按计划运行。
  • 简单。无需配置。只需将您的PR标记为automerge

答案 2 :(得分:1)

您可以使用Mergify来完成此操作,因为这是为此创建的。只需在您的存储库中设置一个最小的.mergify.yml文件:

rules:
  default:
    protection:
      required_status_checks:
        context:
          - continuous-integration/travis/pr
      required_pull_request_reviews:
        required_approving_review_count: 1

那么您就很好了。

(免责声明:我是Mergify的创始人之一)

答案 3 :(得分:0)

https://github.com/bobvanderlinden/probot-auto-merge是完成任务的免费GitHub应用。可在.github/auto-merge.yml中进行配置。

答案 4 :(得分:0)

使用github动作(这是新方法之一)可以做到。我已经写了blog关于使用github操作自动批准和自动合并PR的内容。但是,如果打算仅合并PR,那么此工作流程中的第二项工作就足够了。

答案 5 :(得分:0)

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

Pull request auto-merge public beta

拉取请求自动合并现已作为公开Beta版推出!

使用自动合并,当满足所有合并要求时,拉取请求可以自动合并。不再需要等待较长的检查就可以了,只需按下合并按钮即可!

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

请记住,自动合并仅适用于以必需的审查或必需的状态检查为目标的分支请求,因此仅在Team和GitHub Enterprise Cloud计划的公共存储库和私有存储库中可用。

详细了解pull request auto-merge