如何通过GitHub API检测Pull Request中是否存在指定字符串
有两种更简便的实现方式,无需逐个拉取PR内的提交diff汇总检索:
- 调用PR总diff接口直接检索
直接调用GitHub REST API的GET /repos/{owner}/{repo}/pulls/{pull_number}接口,在请求头中将Accept字段设置为application/vnd.github.diff,接口会直接返回该PR相对于目标分支的全量改动汇总diff,你可以直接在返回的文本内容中检索DONT_MERGE_ME字符串即可,全程只需要发起1次API请求,效率远高于拉取所有提交diff再汇总的方案。
如果PR改动量过大导致diff返回被截断,你可以先调用GET /repos/{owner}/{repo}/pulls/{pull_number}/files接口获取所有改动文件清单,再逐个拉取该PR分支下对应文件的内容检索即可,整体请求量也远低于遍历提交的方案。 - 基于GitHub Actions实现轻量化部署
如果你不需要自己搭建独立机器人服务,可以直接用GitHub Actions实现全流程需求:配置工作流触发条件为PR的新建、更新事件,工作流中直接checkout该PR的全量代码,用grep等工具全局检索DONT_MERGE_ME字符串,一旦命中直接将check标记为失败,同时调用API给PR添加提示注释即可,完全不需要用到受限的GitHub搜索类API,也没有文件大小、分支范围的限制。
内容的提问来源于stack exchange,提问作者Joseph Lust
相关产品推荐
相关产品推荐

