Настроить политику веток в репозитории 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.
Чтобы настроить политики веток в репозитории:
-
Склонируйте репозиторий:
-
Откройте главную страницу SourceCraft.
-
На вкладке Домой перейдите в раздел Репозитории и выберите репозиторий.
-
В правом верхнем углу нажмите кнопку Клонировать.
-
В зависимости от способа подключения скопируйте ссылку для клонирования репозитория.
-
В терминале выполните команду:
git clone <ссылка_для_клонирования_репозитория> -
Перейдите в склонированный репозиторий:
cd <имя_репозитория>
-
Сформируйте файл конфигурации политики веток
.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.
-
Добавьте файл конфигурации политики веток в индекс
git, сделайте коммит и отправьте изменения в удаленную веткуmain:git add .sourcecraft/branches.yaml git commit -m "Added branch policies configuration" git push -u origin main -
Чтобы проверить срабатывание политики веток, внесите изменения в файлы в основной ветке, сделайте коммит и попробуйте отправить изменения в удаленный репозиторий:
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, могут только пользователи с ролью Администратор репозитория.
- Откройте главную страницу SourceCraft.
- На вкладке Домой перейдите в раздел Репозитории.
- Выберите репозиторий.
- На странице репозитория в разделе Настройки перейдите в секцию Общее.
- В блоке Политика защиты веток включите опцию Разрешить переопределение.
- Нажмите Обновить настройки.