axe*_*l22 1 git github github-api
我们正在使用Github,我们有以下拉取请求提交流程:
目前,我们无法自动执行第二项要求.
是否有一个钩子在按下"合并拉动请求"按钮后运行,但在拉动请求真正合并之前,可以用来使PR无效?如果没有,还有其他方法可以确保上面的第二个要求吗?
是的,这是可能的.一般来说,至少有两种方法可以做到这一点.第一个我不喜欢,但如果你无法控制存储库,它可能是一个简单的方法.
由于这个问题有github-api标签,我将谈论第二种选择.
首先,您需要将一些分支配置为受保护.通常他们是develop和master.取决于您的分支模型.
比你需要一些简单的应用程序来通过GitHub Statuses API发布状态.使用以下状态API,您可以发送Pending,Success,Error和Failure状态.Pending,Error和Failed状态将阻止合并按钮.
作为参考,您可以使用我的演示应用程序来计算 :shipit:注释并将PR标记为Successful.这样可以启用"合并"按钮.
这个应用程序是用C#编写的,但我希望即使你没有C#知识也很容易理解.
您需要注册一个新的WebHook.所以,你的脚本/应用的通知.想想你感兴趣的事件.我认为这组事件对你有用:
从通知事件中,您可以提取Pull Request Id并执行不同的检查.
GET /repos/:owner/:repo/issues/:number/labels
Run Code Online (Sandbox Code Playgroud)
使用问题作为追索权有点奇怪,但这就是它的工作原理.问题和拉动请求曾经是时间相同的事情.
之后,请确保您已准备好所有标签并将通知发送给回购.我正在向最后一次提交发送"成功" 状态
POST /repos/:owner/:repo/statuses/:sha
{
"state": "success",
"target_url": "https://example.com/build/status",
"description": "Merge label found",
"context": "review/labels"
}
Run Code Online (Sandbox Code Playgroud)
注意"review/labels"线.这是一个重要的部分.
第一次发送后,您应该转到Repository - > Settings- > Branches- > YourBranchName-> Edit并单击带有上下文名称的复选框.因此,此状态成为执行"合并操作"的必需条件.
其他阅读链接