首页/开发/CI/CD 与发布速查/CODEOWNERS 定义评审归属
质量门禁与回滚51 条

CODEOWNERS 定义评审归属

在仓库中声明路径与负责团队:相关文件变更自动请求对应评审人,配合分支保护可实现未获指定团队批准不得合并。

CI/CD 与发布速查开发更新于 2026-10-13

CODEOWNERS 是什么

CODEOWNERS 把仓库路径与负责团队(或个人)绑定:某路径下的文件被改动时,相应负责人自动被请求评审;配合分支保护里的「Require review from Code Owners」,未获指定负责人批准就无法合并。规则写在仓库内的 CODEOWNERS 文件里(GitHub 支持根目录、.github/、docs/ 三个位置;GitLab 支持根目录、docs/、.gitlab/),随代码评审与版本化。匹配规则自上而下逐行生效,后出现的规则覆盖先出现的,常用的兜底是 * @org/core-team。负责人必须对仓库有写权限,否则评审请求不会生成。

基本信息

GitHub 位置根目录、.github/ 或 docs/ 下的 CODEOWNERS
GitLab 位置根目录、docs/ 或 .gitlab/ 下的 CODEOWNERS
匹配规则自上而下逐行匹配,后者覆盖前者
生效条件配合分支保护或审批规则才强制
权限负责人需有仓库写权限

典型使用场景

  • 平台团队管基础设施:infra、部署脚本的改动强制 SRE 评审。
  • 安全团队盯敏感路径:认证、支付、权限相关目录单独归属。
  • 文档与多语言:文档目录指定对应负责人,翻译改动有人把关。
  • monorepo 分治:各业务目录归属对应团队,评审不串门。
  • 关键路径必审:把核心模块设为必审,防止绕过专业评审。
  • 归属治理:定期更新规则,移除已解散团队与离职成员。

CODEOWNERS 示例

CODEOWNERS 示例
*               @org/core-team  # 兜底:未匹配文件的归属
/infra/         @org/sre  # 基础设施目录
/docs/          @org/docs-team
# 后出现的规则覆盖先出现的,例外放后面

模式写法

模式匹配范围注意
*全部文件兜底用,需活跃团队
/infra/infra 目录下所有文件目录级归属
*.md所有 Markdown后缀通配
@org/team团队成员需有写权限
规则优先级与行序有关:通用规则放前面,例外与精细化规则放后面,写反会出现「该管的人没被叫到」。
CODEOWNERS 本身只产生评审请求:强制效果来自分支保护的必审开关,两处要一起配。
用团队账号而不是个人:成员休假或离职时,请求仍然落到团队队列里,不会无人处理。

易错点

  • 团队无仓库写权限或不可见:评审请求根本不生成,配置时逐个验证。
  • 顺序写反:兜底规则盖住例外,敏感目录无人被请求;例外行放到后面。
  • 依赖个人账号:休假与离职直接阻塞发布节奏,改用团队。
  • 没有兜底行:新目录与新文件无人归属,敏感改动静默合入。
  • 规则长期不更新:请求发到已消失的团队,纳入定期巡检。

数据来源与参考

  • GitHub Docs《About code owners》
  • GitLab Docs《Code Owners》
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌