Ревью владельцами кода
Файл CODEOWNERS позволяет автоматически назначать ответственных за определенные части кода в качестве ревьюеров при создании или обновлении запроса на слияние. Эта функциональность упрощает процесс ревью и обеспечивает контроль качества за счет обязательного участия владельцев кода.
Расположение и приоритет файла CODEOWNERS
Для того чтобы система начала автоматически назначать ревьюеров, файл CODEOWNERS должен находиться в одной из поддерживаемых директорий репозитория.
Файл CODEOWNERS ищется последовательно в следующих каталогах (в порядке убывания приоритета):
/.gitverse/CODEOWNERS— наиболее приоритетный путь./CODEOWNERS— расположение в корне репозитория./docs/CODEOWNERS— расположение в папке документации.
Если файл существует в нескольких местах, используется только один — с наивысшим приоритетом.
Формат файла CODEOWNERS и синтаксис
Каждая строка файла состоит из шаблона пути к файлам и одного или нескольких владельцев кода. В качестве владельцев можно указывать как отдельных пользователей, так и целые команды.
При описании путей поддерживается использование специальных символов без необходимости их экранирования обратным слешем. К поддерживаемым символам относятся:
- пробел;
- знак вопроса
?; - знак плюс
+; - круглые скобки
(); - квадратные скобки
[]; - фигурные скобки
{}; - знак вставки
^; - знак доллара
$.
Для выбора всего содержимого папки можно использовать как формат регулярного выражения folder/.*, так и упрощенную запись folder/.
Примеры заполнения файла для разных сценариев:
# Владельцы для всех JavaScript-файлов
*.js @dev-lead @frontend-lead
# Владельцы для документации (формат с регулярным выражением)
docs/.* @tech-writer
# Назначение публичной команды для серверной логики (упрощенный формат)
src/backend/ @organization_name/backend-team
# Использование спецсимволов в путях без экранирования
config/app(final)+v1.json @architect
scripts/build [beta].sh @devops-team
Требования к владельцам:
- соавторство — владельцы должны иметь доступ к репозиторию (являться его соавторами), иначе они не будут добавлены в список ревьюеров.
Автоматическое добавление ревьюеров
Система автоматически управляет списком ревьюеров на основе файла CODEOWNERS в зависимости от действий с запросом на слияние.
Владельцы кода автоматически добавляются в список ревьюеров при:
- создании нового запроса на слияние;
- добавлении нового коммита в существующий запрос на слияние.
Важные системные правила:
- владельцы не добавляются в черновиках запросов на слияние;
- после автоматического добавления нельзя вручную удалить или добавить владельца кода в список ревьюеров — это делается только через редактирование файла CODEOWNERS;
- при откате коммита добавленные владельцы остаются в списке ревьюеров.
Список владельцев кода пересчитывается при добавлении нового коммита или при переводе запроса из статуса черновика в состояние готовности к ревью. В этих случаях система анализирует версию файла из целевой ветки и сопоставляет измененные файлы с правилами. Обновления файла внутри самого запроса на слияние не учитываются до момента их попадания в целевую ветку.
Работа с командами в CODEOWNERS
Использование команд позволяет назначать на проверку группы специалистов вместо перечисления отдельных логинов.
Особенности обработки команд:
- отображение — в списке ревьюеров показывается только название команды, ее состав не раскрывается;
- замена при ревью — как только любой участник команды дает одобрение или запрашивает правки, команда исчезает из списка, а на ее место встает конкретный участник;
- тип команд — можно использовать только публичные команды организации, приватные команды не поддерживаются.
Интеграция владельцев кода с защитой веток
Вы можете сделать одобрение от владельцев кода обязательным условием для слияния веток. Эта настройка активируется в параметрах защиты веток репозитория.
Для включения правила выполните шаги:
- Перейдите в настройки репозитория, подраздел Ветки.
- В блоке правил защиты перейдите к пункту Утверждение запросов на слияние.
- Укажите необходимое количество одобрений и активируйте опцию Запрашивать проверку от владельцев кода.
Info
При включении этой настройки слияние станет возможным только после получения хотя бы одного одобрения от владельца кода по каждому сработавшему правилу из CODEOWNERS. Обратите внимание: эта опция не может использоваться одновременно с «белым списком» (Разрешить определенному списку). Текущий статус и количество полученных голосов всегда доступны в инфоблоке и ленте событий запроса на слияние.
Ограничения работы владельцев кода
При планировании процессов учитывайте особенность, что владельцы кода не добавляются автоматически, если запрос на слияние создан из форка; в этом случае может потребоваться пересохранение файла настроек;