На уровне всей инсталляции Deckhouse Code настройка уже произведена, однако для включения этого функционала в конкретном проекте требуются дополнительные действия. MRA является дополнительным функционалом, позволяющим:

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

В инструкцие ниже приведены шаги для реализации простейших правил одобрения запросов на слияние для ветки main:

  1. Зайдите в интересующий вас проект.
  2. Выберите «Настройки» → «Запросы на слияние» в левой навигационной панели. Эти действия доступны либо администратору системы, либо пользователям, имеющим соответствующую роль для изменения настроек конкретного проекта.
  3. Отметьте пункт «Все дискуссии должны быть закрыты» в соотвтетсвии с приведенном ниже скриншотом.

  4. Убедитесь, что аккаунт deckhouse_sa имеет доступ к проекту/ руппе с правами Владелец. Если нет, следуйте инструкциям из второй секции документа
  5. Создайте файл approval_rules.yaml в корне проекта, в основной его ветке (по умолчанию ветка main).
  6. Заполните созданный файл.

Пример конфигурации:

policies:
  - name: test_policy_group
    approvers:
      groups:
        - test_group
    count: 1
    includeAuthor: true

  - name: test_policy_user
    approvers:
      users:
        - user1
    count: 1
    includeAuthor: true

rules:
  - name: any
    policies:
      or: 
        - policy: test_policy_user
        - policy: test_policy_group

branches:
  - names: 
      - 'main'
    rule: any

В предложенном варианте конфигурации Запрос на слияние в ветку main будет разрешен только после получения одобрения либо от пользователя user1, либо от любого члена группа test_group.