如何在GitHub中为不同分支配置Pull Request审批规则?
用GitHub Rulesets或GitHub Actions实现指定PR审批流程
完全可以实现你们团队倾向的第二种PR审批方案,以下是具体配置方法:
方案一:GitHub Rulesets(原生配置,推荐)
GitHub Rulesets是官方原生的分支保护增强工具,无需编写代码就能直接满足需求:
配置feature分支的审批规则
- 进入仓库「Settings」→「Rulesets」→「New ruleset」
- 规则范围选「Branches」,指定匹配模式为
feature/*(适配你们的feature分支命名规范) - 开启「Require approval before merging」选项,在「Approval requirements」中选择你的
developer team作为审批团队,设置至少1名成员审批通过 - 可选:开启「Prevent direct pushes to matching branches」,强制所有变更必须通过PR合并
配置develop分支的审批规则
- 新建另一个Ruleset,规则范围指定为
develop分支 - 同样开启「Require approval before merging」,选择
QA团队作为审批团队,设置至少1名成员审批通过 - 可选:添加辅助规则,比如限制仅特定角色发起合并等
- 新建另一个Ruleset,规则范围指定为
方案二:GitHub Actions(自定义逻辑)
如果需要更灵活的自定义逻辑(比如结合其他业务条件),可以用GitHub Actions实现:
创建.github/workflows/pr-approval-check.yml文件,内容示例如下:
name: PR Approval Check on: pull_request_target: types: [opened, reopened, synchronize, review_requested, review_request_removed] jobs: check-approval: runs-on: ubuntu-latest steps: - name: Verify approval from required team env: PR_TARGET: ${{ github.base_ref }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | # 获取当前PR的审批者列表 APPROVERS=$(gh pr view ${{ github.event.number }} --json approvers --jq '.approvers[].login') # 根据目标分支匹配对应审批团队 if [[ $PR_TARGET == feature/* ]]; then # 替换为你的developer团队成员账号,空格分隔 REQUIRED_MEMBERS="dev-01 dev-02 dev-03" elif [[ $PR_TARGET == develop ]]; then # 替换为你的QA团队成员账号 REQUIRED_MEMBERS="qa-01 qa-02 qa-03" else echo "No approval rule for target branch $PR_TARGET" exit 0 fi # 检查是否有符合要求的审批者 for approver in $APPROVERS; do if [[ $REQUIRED_MEMBERS =~ $approver ]]; then echo "Valid approval from $approver detected" exit 0 fi done echo "No valid approval from required team members" exit 1
注意事项
- 使用Actions需确保
GITHUB_TOKEN拥有读取PR信息和团队成员的权限 - 若团队成员变动,可通过GitHub API动态拉取团队成员,替代硬编码的账号列表,减少维护成本
内容的提问来源于stack exchange,提问作者Monsterjamp
相关产品推荐
相关产品推荐

