使用Github API通过REST禁用pull request上的合并按钮并重新启用它。

10

我开发了自己的Web服务器,可以对我的安卓应用进行自动化。如果在自动化运行时有问题,我想使用cURL REST命令以编程方式禁用GitHub的Pull Request上的"merge"按钮。我找不到正确的方法来实现这一点,但似乎很多人会从这个功能中受益。

Github Pull Request的API可以在此处找到:https://developer.github.com/v3/pulls/

我知道这是可能的,因为如果您的分支存在合并冲突,该按钮将变灰,并且您无法单击/合并它。这正是我要寻找的确切功能。任何帮助都将不胜感激。

2个回答

7

这是可能的。您需要采取几个步骤才能启用此功能。

  1. 配置 您的一些分支(通常是 master 或/和 develop,取决于您的工作流程)作为 protected
  2. 使用 状态 API,您可以发送 PendingSuccessErrorFailure 状态。 PendingErrorFailed 状态将阻止合并按钮。

完成后,您可以根据业务规则发布状态。

POST /repos/:owner/:repo/statuses/:sha

:sha 是拉取请求中最新提交的哈希值

具有以下负载的:

{
  "state": "success",
  "target_url": "https://link.to/some/reporting/page",
  "description": "Automation tests passed!",
  "context": "continuous-integration/automation-tests"
}

有一件事值得一提。当您发布至少一个状态时,context字段中的值将显示在受保护分支设置页面上。不要忘记将此状态标记为必需:

Require status checks to pass before merging

保护分支和必需的状态检查


-1

保护分支,如果状态检查未通过或审核未完成,则阻止合并是有效的。这是一个非常简单的解决方案,而且完美地运作。 但如果你更好奇,那就试着不保护分支来实现它。我找不到这样做的方法。


为什么你不保护这个分支? - Marcello Romani

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