Правила апрувов помогают контролировать качество кода и обеспечивать обязательное ревью перед слиянием. С их помощью можно определить, сколько апрувов нужно получить, кто именно должен участвовать в проверке, и в каких случаях правило должно срабатывать.

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

Определение правил

Правила можно определить на уровне:

  • Группы (доступно для роли Maintainer). Чтобы определить правила для группы, перейдите в «Группа» → «Настройки» → «Запросы на слияние» → «Правила апрува».
  • Проекта (доступно для роли Maintainer). Чтобы определить правила для проекта, перейдите в «Настройки» → «Запросы на слияние» → «Правила апрува».
  • Запроса на слияние (доступно для роли Developer). Чтобы определить правила для запроса на слияние, на странице создания или редактирования MR раскройте секцию «Правила апрува».

Таблица правил апрува

Описание столбцов таблицы правил апрува

  • Правило — содержит название правила и признак наследования. Запись «Требуется группой Gitlab Org» означает, что правило создано в группе Gitlab Org.
  • Апруверы — содержит список пользователей и групп, чьи апрувы учитываются при проверке выполнения правила.
  • Требуемое количество апрувов — количество апрувов, которое необходимо получить от пользователей или участников групп, указанных в столбце «Апруверы». Значение Любой подходящий пользователь означает, что будет засчитан апрув от любого пользователя, который имеет право его выполнить.
  • Целевая ветка — правило применяется только если запрос на слияние направлен в указанную ветку. В качестве названия ветки можно использовать wildcard (*).

Наследование правил

Правила апрувов наследуются каскадно: группа → подгруппа → проект → запрос на слияние. Механизм наследования имеет следующие особенности:

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

  • При создании новых правил на уровне группы или проекта они автоматически добавляются во все существующие нижестоящие подгруппы и проекты. В уже созданные запросы на слияние новые правила не добавляются.

  • Если изменить правило на родительском уровне, изменения автоматически применяются ко всем унаследованным правилам на нижестоящих уровнях. Например, если проект унаследовал правило из группы и в группе изменить количество требуемых апрувов, то это изменение отразится и в проекте.

  • Если же изменить унаследованное правило в дочерней сущности, оно превращается в самостоятельное правило. То есть правило перестаёт быть связанным с родительским: на дочернем уровне остаётся собственная копия с новыми параметрами, и дальнейшие изменения правила в группе уже не затронут это правило в проекте.

Правила для группы

Как найти: «Группа» → «Настройки» → «Запросы на слияние» → «Правила апрува».

Правила, созданные на уровне группы, автоматически добавляются в новые проекты и подгруппы как унаследованные.

Управлять правилами группы могут участники группы с ролью Maintainer.

В разделе «Правила апрува» отображается список правил, настроенных на уровне группы.

Создание правила в группе

Создать новое правило можно, нажав кнопку «Добавить правило апрува» и указав:

  • Название правила.
  • Целевую ветку (доступны пресеты «Все ветки», «Все защищенные ветки», «Ввести название ветки», либо wildcard *).
  • Требуемое количество апрувов.
  • Апруверов — прямых участников группы или группы на инстансе. При добавлении группы учитываются апрувы только от прямых участников добавленной группы.

Правила для проекта

Как найти: «Проект» → «Настройки» → «Запросы на слияние» → «Правила апрува».

Правила, созданные на уровне проекта, автоматически добавляются в новые запросы на слияние как унаследованные.

Управлять правилами проекта могут участники проекта с ролью Maintainer.

Создание правила в проекте

При создании нового правила можно указать:

  • Название правила.
  • Целевую ветку (можно выбрать пресет, указать название ветки или регулярное выражение; также можно выбрать защищённую ветку проекта).
  • Требуемое количество апрувов.
  • Апруверов — прямых или унаследованных участников проекта, а также группы, приглашённые в проект с ролью Reporter. Со стороны добавленной группы учитываются апрувы только от прямых участников группы.

Правила для запроса на слияние

Как найти: на странице создания или редактирования MR необходимо раскрыть секцию «Правила апрува».

Правилами запроса на слияние могут управлять пользователи с ролью Developer.

Таблица правил апрува

На странице MR доступна кнопка «Сбросить к настройкам проекта по умолчанию» — она удаляет текущие правила и добавляет все правила проекта, которые применимы для целевой ветки MR.

Создание правила в MR

При создании правила можно указать:

  • Название правила.
  • Требуемое количество апрувов.
  • Апруверов — прямых или унаследованных участников проекта, а также группы с ролью Reporter или выше. Со стороны группы учитываются апрувы только от прямых участников группы.

Дополнительные настройки апрувов

Настройки апрувов

На уровне проекта или группы можно настроить дополнительные параметры:

  • Запретить апрув автору запроса на слияние — автор MR не может делать апрув.
  • Запретить апрув пользователю, который добавил коммиты — коммиттеры не могут делать апрувы.
  • Запретить редактирование правил в наследуемых сущностях — при включении:
    • правила копируются в дочерние сущности и становятся недоступны для редактирования или удаления;
    • нижестоящие группы и проекты могут создавать только собственные правила;
    • в существующие MR правила автоматически не добавляются;
    • текущие настройки апрувов также распространяются на все дочерние сущности.
  • При добавлении коммита — секция определяет, должны ли сбрасываться существующие апрувы при появлении нового коммита.

Кто может делать апрувы

Если настройки апрувов этого не запрещают, апрувы могут делать:

  • все участники проекта с ролью Developer и выше;
  • участники с ролью Planner и выше, если они назначены ответственными в запросе на слияние.