Настроить политику веток в репозитории 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.
Чтобы настроить политики веток в репозитории:
-
Склонируйте репозиторий:
-
Откройте главную страницу SourceCraft.
-
На вкладке
-
В правом верхнем углу нажмите кнопку
-
В зависимости от способа подключения скопируйте ссылку для клонирования репозитория.
-
В терминале выполните команду:
git clone <ссылка_для_клонирования_репозитория>
-
Перейдите в склонированный репозиторий:
cd <имя_репозитория>
-
Сформируйте файл конфигурации политики веток
.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.
-
Добавьте файл конфигурации политики веток в индекс
git
, сделайте коммит и отправьте изменения в удаленную веткуmain
:git add .src.ci.yaml git commit -m "Added brunch 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
.
Включить обход политики веток для администратора репозитория
Важно
Обойти правила политики веток, например чтобы поправить конфигурацию в .src.ci.yaml
, могут только пользователи с ролью Repository admin.
- Откройте главную страницу SourceCraft.
- На вкладке
- Выберите репозиторий.
- На странице репозитория в разделе
- В блоке Политика защиты веток включите опцию Разрешить переопределение.
- Нажмите Обновить настройки.