如何获取Github Pull Request评论所属分支?构建Travis工具遇问题
嘿,我之前做类似工具的时候也踩过这个坑!其实你没遗漏什么,只是GitHub的Issue评论Webhook payload里的issue对象确实不会直接带分支信息,但有几个靠谱的办法能拿到:
检查payload里的
pull_request嵌套字段
因为PR在GitHub体系里本质是特殊的Issue,所以当你收到PR评论的Webhook时,payload里的issue对象会附带一个pull_request子对象。这个对象里的head.ref就是PR的源分支(也就是你要找的变更所属分支),base.ref是目标分支。比如你可以这样提取:// 示例payload片段 { "issue": { "pull_request": { "head": { "ref": "feature/add-webhook-integration" }, "base": { "ref": "main" } } } }注意:只有PR的评论才会有这个字段,普通Issue评论是没有的,所以可以用这个字段先判断当前评论是否属于PR。
通过GitHub API查询PR详情
如果因为某些原因payload里的pull_request字段不全(比如Webhook配置没选对权限),你可以用payload里的issue.number(PR的编号和Issue编号是一致的),调用GitHub的Pulls API:GET /repos/{owner}/{repo}/pulls/{number}。返回的响应里同样能拿到head.ref和base.ref字段。额外小技巧:Webhook事件类型筛选
如果你只关心PR评论,建议在GitHub Webhook配置里只订阅pull_request_review_comment事件,而不是issue_comment事件。这个事件的payload会直接带完整的PR信息,包括分支,比通用的Issue评论事件更精准。
内容的提问来源于stack exchange,提问作者Alper

