CODEOWNERS - файл, що визначає людей чи команди, відповідальні за частини репозиторію. Коли PR змінює їхні файли, GitHub автоматично запитує в них рев'ю.
Де лежить: .github/CODEOWNERS, корінь репозиторію чи docs/ - GitHub шукає в такому порядку і бере перший знайдений. Файл діє для тієї гілки, в якій лежить.
# За замовчуванням - уся команда бекенду
* @acme/backend
# Міграції - обов'язково команда даних
/database/migrations/ @acme/data
# Платежі - конкретні люди
/app/Billing/ @olena @acme/payments
# Фронтенд
*.vue @acme/frontend
/resources/js/ @acme/frontend
# Захистити сам файл і конфіги CI
/.github/ @acme/leads
Синтаксис: шаблони як у .gitignore, останній збіг має пріоритет. Тому загальне правило * іде першим, а конкретніші - нижче. Якщо для файла останнє правило не містить власників, у нього їх немає.
Вимоги: власники мають мати права на запис у репозиторій; команда має бути видимою й теж мати права на запис.
Справжня сила - разом із захистом гілки: правило Require review from Code Owners (у branch protection чи ruleset) не дає злити PR, доки його не схвалить власник змінених файлів. Без цього CODEOWNERS - лише автоматичне запрошення.
Практичні поради:
- захистити
.github/: інакше будь-хто може в PR змінити CODEOWNERS чи workflow CI і обійти правила; - команди, а не люди, де можливо: людина йде у відпустку - рев'ю блокується;
- не робити власником усього одну людину - вона стане вузьким місцем;
- GitHub показує помилки синтаксису CODEOWNERS прямо в інтерфейсі файла - варто перевіряти після змін.