如何配置GitHub在不自动发评审请求时强制CODEOWNERS审核PR?
实现方案
GitHub原生没有提供直接关闭「非草稿PR创建时自动触发CODEOWNERS评审请求」的配置开关,但可以通过GitHub Actions配合现有分支保护规则实现需求,全程不需要贡献者主动使用草稿PR功能,核心的「必须获得CODEOWNERS审批才可合并」规则也不会被破坏。
具体配置步骤
- 保留现有分支保护规则的核心配置:保留「合并前必须通过审查」「要求CODEOWNERS审批」两个强制选项,确保合并校验逻辑不变。
- 在仓库的
.github/workflows目录下新建一个工作流文件,比如命名为remove-auto-codeowner-review.yml,逻辑很简单:PR刚创建、GitHub自动给CODEOWNERS发完评审请求的瞬间,工作流就把这些请求全部撤掉,代码如下:
name: Remove auto-requested codeowner reviews on: pull_request: types: [opened, reopened] permissions: pull-requests: write contents: read jobs: remove-auto-reviews: runs-on: ubuntu-latest steps: - name: Revoke automatically requested codeowner reviews uses: actions/github-script@v7 with: script: | const { data: reviewers } = await github.rest.pulls.listRequestedReviewers({ owner: context.repo.owner, repo: context.repo.repo, pull_number: context.issue.number }) const teamSlugs = reviewers.teams.map(t => t.slug) const userLogins = reviewers.users.map(u => u.login) if (teamSlugs.length > 0 || userLogins.length > 0) { await github.rest.pulls.removeRequestedReviewers({ owner: context.repo.owner, repo: context.repo.repo, pull_number: context.issue.number, reviewers: userLogins, team_reviewers: teamSlugs }) }
- (可选优化)在PR模板中增加一行提示,告知贡献者:完成PR内容修改后,需要手动在PR右侧栏点击「Request review」,请求对应CODEOWNERS团队/成员评审,未获得审批无法合并。
方案说明
- 该逻辑不会破坏CODEOWNERS强制审批规则:分支保护的校验逻辑只检查「对应路径的CODEOWNERS是否提交了批准审批」,和评审请求是系统自动发的还是贡献者手动发起的没有关系。贡献者改完内容手动发起评审后,CODEOWNERS正常审批即可满足合并条件,未审批的PR始终无法合并,完全符合核心要求。
- 对贡献者无额外使用要求:贡献者可以按照原有习惯直接创建正式PR,PR创建后数秒内系统就会撤回自动发起的评审请求,不会对CODEOWNERS造成无效打扰,贡献者可以自由在PR上修改、调整内容,直到准备就绪再手动发起评审。
- 通知影响极小:工作流触发延迟通常在3秒以内,绝大多数情况下CODEOWNERS不会收到无效的评审通知,极少数场景下收到的通知也会随评审请求撤回自动标记为失效,不会造成实际干扰。
内容的提问来源于stack exchange,提问作者K--
相关产品推荐
相关产品推荐

