如何获取Github Automerge合并失败的异步通知及失败原因
GitHub Automerge API 合并失败异步通知实现方案
方案1:监听原生Pull Request Webhook事件
这是最推荐的异步通知方式,完全不需要额外开发复杂逻辑:
- GitHub 原生的
pull_requestwebhook 事件会覆盖 Automerge 的所有执行结果,当 Automerge 合并失败时,事件的action字段值为auto_merge_disabled - 事件返回体中附带的
reason字段会明确标注失败原因,常见取值包括:merge_conflict:分支存在代码冲突required_approving_review_count_not_met:未达到分支保护规则要求的审批人数status_checks_failed:必填的CI/状态检查未通过branch_protection_violation:存在其他违反分支保护规则的情况
- 你只需要在对应仓库/组织的webhook配置中,勾选监听
pull_request事件,服务端接收事件后判断对应字段即可实时拿到合并失败的通知和具体原因。
方案2:API轮询作为兜底方案
如果你的场景允许少量延迟,可以搭配轮询逻辑做双重校验:
- 调用Automerge API提交合并请求后,按照你的业务需要的时间间隔,调用
GET /repos/{owner}/{repo}/pulls/{pull_number}接口查询PR的实时状态 - 当返回结果的
merged字段为false,且auto_merge字段为null时,即可判定Automerge已执行失败,mergeable_state字段的取值对应具体的失败原因。
同步错误提前处理
部分错误不需要等异步通知,调用Automerge API时的同步返回就可以直接捕获:如果API返回4xx状态码,说明你的Automerge请求本身不合法,比如PR已关闭、当前操作账号无合并权限、PR处于草稿状态等,错误信息会直接在同步返回体中给出,可以直接处理不需要走异步逻辑。
内容的提问来源于stack exchange,提问作者WOOB
相关产品推荐
相关产品推荐

