Ревью владельцами кода

Файл CODEOWNERS позволяет автоматически назначать ответственных за определенные части кода в качестве ревьюеров при создании или обновлении запроса на слияние. Эта функциональность упрощает процесс ревью и обеспечивает контроль качества за счет обязательного участия владельцев кода.

Расположение и приоритет файла CODEOWNERS

Для того чтобы система начала автоматически назначать ревьюеров, файл CODEOWNERS должен находиться в одной из поддерживаемых директорий репозитория.

Файл CODEOWNERS ищется последовательно в следующих каталогах (в порядке убывания приоритета):

  1. /.gitverse/CODEOWNERS.
  2. /CODEOWNERS (в корне репозитория).
  3. /docs/CODEOWNERS.

Если файл существует в нескольких местах, используется только один — с наивысшим приоритетом.

Формат файла CODEOWNERS и синтаксис

Каждая строка файла состоит из шаблона пути к файлам и одного или нескольких владельцев кода. В качестве владельцев можно указывать как отдельных пользователей, так и целые команды.

Примеры заполнения файла CODEOWNERS для разных сценариев:

# Владельцы для всех JavaScript-файлов (назначение конкретных пользователей)
*.js @dev-lead @frontend-lead

# Владельцы для документации (назначение пользователя)
docs/.* @tech-writer

# Назначение публичной команды для всей серверной логики
src/backend/.* @organization_name/backend-team

# Комбинированный вариант: команда и отдельный эксперт для критичного файла
src/backend/security.go @organization_name/security-team @chief-architect

Требования к владельцам:

  1. Владельцы должны иметь доступ к репозиторию (быть соавторами).
  2. Если владелец не имеет доступа, он не будет добавлен в ревьюеры.

Автоматическое добавление ревьюеров

Система автоматически управляет списком ревьюеров на основе файла CODEOWNERS в зависимости от действий с запросом на слияние.

Владельцы кода автоматически добавляются в список ревьюеров при:

  • создании нового запроса на слияние;
  • добавлении нового коммита в существующий запрос на слияние.
⚠️

Важные системные правила:

  • владельцы не добавляются в черновиках запросов на слияние;
  • после автоматического добавления нельзя вручную удалить или добавить владельца кода в список ревьюеров — это делается только через редактирование файла CODEOWNERS;
  • при откате коммита добавленные владельцы остаются в списке ревьюеров.

Список владельцев кода не является статичным и пересчитывается при добавлении нового коммита или при переводе запроса из статуса «Черновик» в готовый к ревью.

В этих случаях система анализирует текущую версию файла CODEOWNERS из целевой ветки (например, main), сопоставляет измененные файлы и добавляет новых владельцев. При этом изменения в CODEOWNERS, внесенные внутри самого запроса на слияние, не учитываются. Уже добавленные владельцы не удаляются из списка, а при переводе запроса в черновик и обратно все их одобрения сбрасываются.

Работа с командами в CODEOWNERS

Использование команд в файле CODEOWNERS позволяет назначать на ревью целые группы специалистов вместо перечисления отдельных логинов.

Особенности обработки команд:

  1. Команды будут добавлены в список ревьюеров как единый элемент. В списке ревьюеров показывается только название команды, состав не раскрывается.
  2. Как только любой участник команды дает одобрение или запрашивает правки, команда исчезает из списка, а на ее место встает конкретный участник, выполнивший ревью.
  3. Можно добавлять только публичные команды. Приватные команды не поддерживаются.

Интеграция владельцев кода с защитой веток

Вы можете сделать одобрение от владельцев кода обязательным условием для слияния. Это настраивается в параметрах защиты веток репозитория.

Для включения этого правила выполните следующие шаги:

  1. Перейдите в Настройки репозитория.
  2. Откройте подраздел Ветки.
  3. Перейдите к пункту Утверждение запросов на слияние.
  4. Укажите необходимое количество одобрений (от 1 до 100).
  5. Включите опцию Запрашивать проверку от владельцев кода.

При включении опции для слияния запроса обязательно потребуется хотя бы одно одобрение от владельца кода по каждому правилу, автоматически добавленного из CODEOWNERS. Эта настройка взаимоисключающая с опцией «Разрешить определенному списку». Количество полученных одобрений и сами события отображаются в инфоблоке и ленте событий запроса на слияние.

Ограничения работы владельцев кода

При использовании функциональности CODEOWNERS учитывайте, что владельцы кода не добавляются, если запрос создан из форка. Требуется пересохранить файл CODEOWNERS для того, чтобы он начал учитываться.

Вы нашли что искали?