Настроить политику веток в репозитории SourceCraft

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

Подробнее см. на странице Политики веток в SourceCraft.

Конфигурация политик задается для конкретного репозитория и хранится в файле .sourcecraft/branches.yaml. Для всего репозитория действует конфигурация, которая размещена в основной ветке, например master или main.

Общий вид конфигурации политики в .sourcecraft/branches.yaml:

branch_protection:
          policies:
            - target: <тип_защищаемого_ресурса>
              matches: "<фильтр>"
              message: "<сообщение_пользователю_при_срабатывании>"
              rules:
                - <правило_1>
                - <правило_2>
        

Где:

  • target — тип защищаемого ресурса. Обязательный параметр. Возможные значения:
    • default_branch — основная ветка, например master или main.
    • branch — ветка.
    • tag — тег.
  • matches — фильтр или список фильтров по имени защищаемого ресурса. Обязательный параметр для target: branch и target: tag.
  • message — сообщение, которое будет показываться пользователю при срабатывании политики. Обязательный параметр.
  • rules — правило или список правил, которые будут применены к защищаемому ресурсу. Обязательный параметр. Возможные значения:
    • prevent_force_push — нельзя переписывать историю коммитов в ветке (выполнять force push).
    • prevent_non_pr_changes — нельзя напрямую вносить изменения в ветку (выполнять push), только через пул-реквесты.
    • prevent_all_changes — нельзя выполнять любые действия с веткой или тегом.
    • prevent_deletion — нельзя удалять ветку или тег.
    • prevent_creation — нельзя создавать ветку или тег.

Важно

Скоро перестанет поддерживаться хранение конфигурации CI/CD, правил ревью кода и политик веток в едином файле .src.ci.yaml в корне репозитория. Используйте отдельные файлы .sourcecraft/ci.yaml, .sourcecraft/review.yaml и .sourcecraft/branches.yaml.

Полную схему см. в подразделе Схема политики веток в формате JSON.

Чтобы настроить политики веток в репозитории:

  1. Склонируйте репозиторий:

    1. Установите Git.

    2. Откройте главную страницу SourceCraft.

    3. На вкладке Домой перейдите в раздел Репозитории и выберите репозиторий.

    4. В правом верхнем углу нажмите кнопку Клонировать.

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

    6. В терминале выполните команду:

      git clone <ссылка_для_клонирования_репозитория>
              
    7. Перейдите в склонированный репозиторий:

      cd <имя_репозитория>
              
  2. Сформируйте файл конфигурации политики веток .sourcecraft/branches.yaml, например:

    branch_protection:
              policies:
                ## Запрет переписывания истории коммитов, внесения изменений без 
                ## пул-реквеста и удаления основной ветки
                - target: default_branch
                  message: "Direct push into main branch is forbidden, create PR first"
                  rules:
                    - prevent_force_push
                    - prevent_non_pr_changes
                    - prevent_deletion
            
                ## Запрет создания веток с названиями, соответствующими фильтрам
                - target: branch
                  matches: ["*", "!OO-*/**", "!hotfix/**", "!chore/**", "!release/**"]
                  message: "Please use proper branch naming"
                  rules:
                    - prevent_creation
            
                ## Запрет создания тегов с названиями, соответствующими фильтрам
                - target: tag
                  matches: "gitcore-*"
                  message: "Manual tag creation is forbidden, please use Releaser"
                  rules:
                    - prevent_creation
            

    Также см. пример политики веток в репозитории SourceCraft test-serverless-cube.

  3. Добавьте файл конфигурации политики веток в индекс git, сделайте коммит и отправьте изменения в удаленную ветку main:

    git add .sourcecraft/branches.yaml
            git commit -m "Added branch policies configuration"
            git push -u origin main
            
  4. Чтобы проверить срабатывание политики веток, внесите изменения в файлы в основной ветке, сделайте коммит и попробуйте отправить изменения в удаленный репозиторий:

    git add .
            git commit -m "Test changes"
            git push -u origin main
            

    В результате вы получите ошибку с сообщением Direct push into main branch is forbidden, create PR first.

Включить обход политики веток для администратора репозитория

Важно

Обойти правила политики веток, например чтобы поправить конфигурацию в .sourcecraft/branches.yaml, могут только пользователи с ролью Администратор репозитория.

  1. Откройте главную страницу SourceCraft.
  2. На вкладке Домой перейдите в раздел Репозитории.
  3. Выберите репозиторий.
  4. На странице репозитория в разделе Настройки перейдите в секцию Общее.
  5. В блоке Политика защиты веток включите опцию Разрешить переопределение.
  6. Нажмите Обновить настройки.

См. также