CODEOWNERS

Por: Artiko
githubcodeownerscode-reviewdevops

CODEOWNERS

CODEOWNERS define quién es responsable de cada parte del código. Cuando alguien abre un PR que toca archivos con owner, GitHub asigna automáticamente a esos owners como reviewers. Combinado con branch protection, se convierte en un bloqueo: nadie mergea sin la aprobación del dueño.

Ubicación

El archivo debe estar en uno de los directorios que GitHub reconoce, en la rama por defecto:

Sintaxis

Cada línea es un patrón de ruta estilo .gitignore seguido de uno o más owners: @usuario, @organizacion/equipo o un email.

# Patrón            Owners
*.js                @equipo-frontend
/docs/              @tech-writers
/src/api/           @backend-team @lider-backend
*.tf                @[email protected]

Los owners a la derecha son a quienes GitHub asignará como reviewers cuando un PR toque archivos que matcheen ese patrón.

La regla clave: gana la última línea que matchea

Este es el error más común. Cuando varias líneas coinciden con un mismo archivo, no gana la más específica: gana la última línea que matchea en el archivo. El orden importa.

*               @equipo-general
/src/api/       @backend-team

Para /src/api/users.js coinciden ambas líneas. Como /src/api/ @backend-team va después, el owner efectivo es @backend-team — la primera línea queda anulada para ese archivo. Si invirtieras el orden, el owner sería @equipo-general. Por eso las reglas se escriben de lo general a lo específico: lo más específico va al final para que gane.

Ejemplos de patrones

PatrónA qué aplica
*Todos los archivos del repo
*.jsCualquier .js en cualquier carpeta
/build/Solo la carpeta build/ de la raíz
docs/Cualquier carpeta docs/ en cualquier nivel
/src/api/*Archivos directos de src/api/ (no subcarpetas)
/src/api/Todo dentro de src/api/, recursivo

Convertirlo en bloqueo de merge

Por sí solo, CODEOWNERS solo asigna reviewers automáticamente; no impide el merge. Para que sea un gate real hay que activar, en la branch protection rule de la rama (Settings → Branches):

Con eso, un PR que toca /src/api/ no puede mergearse sin la aprobación de @backend-team.

Requisitos de los equipos

Para que un @organizacion/equipo funcione como owner:

Un owner inválido (usuario sin acceso, equipo sin permisos) hace que GitHub ignore esa regla y muestre un error de sintaxis en el archivo.


AnteriorCapítulo 7: Community health files · SiguienteCapítulo 9: SECURITY.md