本文目录导读:

在PHP项目中设置多级审核流程(Code Review),通常需要结合代码托管平台(如GitLab、GitHub、Bitbucket)的功能和自动化CI/CD来实现,以下是几种主流方案及其配置方法:
GitLab 方案(最推荐)
GitLab 的 Approval Rules 功能原生支持多级审核:
设置方法
# 在项目的 Settings > Merge Requests > Approval Rules 中配置
# 或通过 .gitlab/approval-rules.yml 文件配置
- name: "初级审核" # 第一级:团队开发人员
approvals_required: 1
members:
- project_members: developer
- name: "高级审核" # 第二级:技术主管
approvals_required: 1
members:
- project_members: maintainer
- name: "架构审核" # 第三级:架构师(可选)
approvals_required: 0 # 可设为0,以备注形式存在
members:
- specific_users: ["architect@company.com"]
使用示例
# .gitlab/merge_request_template.md ## 审核流程 本合并请求需经过以下审核: 1. ✅ 初级审核(开发团队) 2. ✅ 高级审核(技术主管) 3. ⏳ 架构审核(架构师) [描述你的修改]
GitHub 方案
GitHub 通过 Branch Protection Rules + Required Pull Request Reviews 实现:
设置分支保护规则
# Settings > Branches > Add rule Branch name pattern: main # 勾选选项: - Require a pull request before merging - Require approvals - Dismiss stale pull request approvals when new commits are pushed - Require review from Code Owners
CODEOWNERS 文件配置
# .github/CODEOWNERS # 全局所有者(高级审核) * @tech-lead-team # 核心模块(架构审核) /src/core/ @architect-team # API层(需要API专家审核) /src/API/ @api-team-lead # 数据库迁移(需要DBA审核) /database/migrations/ @dba-team
多级审核流程示例
# 在合并请求时自动要求: 1. 至少1名开发人员审核 2. 技术主管审核(通过CODEOWNERS) 3. 如果涉及数据库变更,自动添加DBA审核
Bitbucket 方案
Bitbucket 的 Approvals 功能:
分支权限配置
# Repository settings > Branch permissions Branch: main # 设置: - Require at least 2 approvals - Reset approvals when new commits are pushed - Require approval from specific groups
代码审查设置
# Repository settings > Pull request settings Default reviewers: - 开发者组: ["dev-team"] - 技术评审组: ["review-team"] - 架构组: ["arch-team"] Auto-assign: - 如果文件修改量>200行,自动添加技术主管 - 如果涉及配置文件,添加运维团队
结合CI/CD实现自动化审核
使用 GitLab CI 示例
# .gitlab-ci.yml
stages:
- lint
- test
- code-review
- merge-check
code-quality:
stage: code-review
script:
- phpcs --standard=PSR12 --extensions=php src/
only:
- merge_requests
security-scan:
stage: code-review
script:
- php security-checker.phar security:check composer.lock
only:
- merge_requests
# 阻塞流程:如果CI失败,不允许合并
blocking-check:
stage: merge-check
script:
- echo "Checking approval status..."
- |
# 检查是否已获得所有需要的审核
if [ "$CI_MERGE_REQUEST_APPROVALS" != "full" ]; then
echo "需要等待所有审核通过"
exit 1
fi
实际项目中的最佳实践
定义清晰的审核级别
# .gitlab/approval-rules.yml
- name: "Level 1 - 代码质量审核"
approvals_required: 1
members:
- project_members: developer
approver_attributes:
- grade: junior
- name: "Level 2 - 逻辑与设计审核"
approvals_required: 1
members:
- project_members: maintainer
approver_attributes:
- grade: senior
- name: "Level 3 - 安全与架构审核"
approvals_required: 1
members:
- groups: ["security-team", "architect-team"]
conditional_rules:
- if: files_changed > 50
- if: includes_files: ["/config/*", "/security/*"]
使用Git Hooks辅助
# .git/hooks/pre-commit #!/bin/bash # 检查是否符合提交规范 echo "检查提交信息格式..." if ! head -1 "$1" | grep -qE "^(feat|fix|docs|style|refactor|test|chore)\(.*\):.*$"; then echo "提交信息格式不正确,请使用语义化提交" exit 1 fi
审核检查清单
# Pull Request 审核清单 ## 基础检查 - [ ] 代码符合PSR-12标准 - [ ] 没有安全漏洞 - [ ] 单元测试通过 ## 功能检查 - [ ] 符合业务需求 - [ ] 错误处理完善 - [ ] 性能优化到位 ## 架构检查(高级审核) - [ ] 架构设计合理 - [ ] 扩展性良好 - [ ] 兼容现有系统
常见问题解决
权限不足问题
# 检查组权限 gitlab group-members list --group-id 123 # 添加审核人员 gitlab approval-rule add --project-id 456 --name "审核组" --user-ids 789
审核超时处理
# 设置超时提醒
hooks:
auto_merge:
add_reviewers_if_needed: true
reminder:
time: "1h" # 1小时后提醒
repeat: 3 # 重复提醒3次
总结建议
- 小型项目:2级审核(开发者+技术主管)
- 中型项目:3级审核(初级+高级+架构师)
- 大型项目:结合团队规模和风险等级动态调整
推荐使用 GitLab 的 Approval Rules 功能,它提供了最灵活和完整的多级审核支持,同时结合CI/CD自动化流程能大幅提升代码质量和团队协作效率。