我们正在使用Github,我们有以下拉取请求提交流程:
目前,我们无法自动执行第二项要求。
在按下“合并拉取请求”按钮之后,但是在拉取请求真正合并之前是否有一个挂钩,可以用来使PR无效? 如果没有,还有其他方法可以确保上面的第二个要求吗?
答案 0 :(得分:5)
是的,这是可能的。 一般来说,至少有两种方法可以做到这一点。第一个我不喜欢,但如果你无法控制存储库,它可能是一个简单的方法。
构建类似Do Not Merge WIP for GitHub Chrome扩展程序的内容。
使用状态API和受保护的分支
由于这个问题有github-api
标签,我将谈谈第二种选择。
首先你需要configure some branches as protected。通常它们是develop
和master
。取决于您的分支模型。
您需要一些简单的应用程序才能通过GitHub Statuses API发布状态。使用状态API,您可以发送Pending
,Success
,Error
和Failure
状态。 Pending
,Error
和Failed
状态将阻止合并按钮。
作为参考,您可以use my demo app which counts :shipit:
发表评论并将PR标记为Successful
。这样就可以启用“合并”按钮。
这个应用程序是用C#编写的,但我希望即使你没有C#知识也很容易理解。
您需要注册一个新的WebHook。所以你的脚本/ app is notified。想想你感兴趣的about events。我认为这组事件对你有用:
从通知事件中,您可以提取Pull Request ID并执行不同的检查。
在您的情况下,您需要使用List labels on an issue
GET /repos/:owner/:repo/issues/:number/labels
使用问题作为追索权有点奇怪,但这就是它的运作方式。问题和拉动请求曾经是过时的事情。
之后确保您已准备好所有标签并将通知发送给回购。 我正在发送“成功”status to the last commit
POST /repos/:owner/:repo/statuses/:sha
{
"state": "success",
"target_url": "https://example.com/build/status",
"description": "Merge label found",
"context": "review/labels"
}
注意"review/labels"
行。这是一个重要的部分。
第一次发送后,你应该去Repository - > Settings
- > Branches
- > YourBranchName-> Edit
,然后点击带有您的上下文名称的复选框。因此,此状态必须执行“合并操作”。
其他阅读链接