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

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

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

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

Совет

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

Общий вид конфигурации политики в .src.ci.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 — нельзя создавать ветку или тег.

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

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

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

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

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

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

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

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

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

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

      cd <имя_репозитория>
      
  2. Сформируйте файл конфигурации политики веток .src.ci.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 .src.ci.yaml
    git commit -m "Added brunch 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.

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

Важно

Обойти правила политики веток, например чтобы поправить конфигурацию в .src.ci.yaml, могут только пользователи с ролью Repository admin.

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

См. также