Насколько я знаю, нет простого способа сообщить GitLab, какие ветви разрешено объединять с какими другими.Если вы используете GitLab CI, есть способ добиться того, чего вы хотите.
Если вы идете в свой проект на GitLab, то в Настройки -> Общие -> Запросы на слияние.Там вы найдете флажок, который гласит: «Разрешать объединение запросов на объединение только в случае успешного выполнения конвейера».
Затем вам нужно настроить конвейер для вашего проекта, и вы сможете найти учебники и документацию.за это.Затем существуют две переменные среды с именами «CI_MERGE_REQUEST_SOURCE_BRANCH_NAME» и «CI_MERGE_REQUEST_TARGET_BRANCH_NAME».Они устанавливаются GitLab, когда конвейер работает в контексте запроса на слияние.
Вот список всех предопределенных переменных.https://docs.gitlab.com/ce/ci/variables/#predefined-environment-variables
Затем можно настроить задание, которое будет запускаться перед всеми другими заданиями, но только при наличии запроса на слияние.В противном случае нет смысла проверять эти переменные!Пример может выглядеть следующим образом:
stages:
- merge-check
- build
- test
allowed-merge:
stage: merge-check
script:
- check-branches # This command is different depending on if you run cmd/bash
only:
- merge_requests
Скрипт для проверки имени ветки может выглядеть по-разному в зависимости от того, где выполняется ваш бегун gitlab.Он должен проверить эти две переменные окружения и вернуть 0, если ветви верны, и вернуть 1 в противном случае.
Выполнение этого не останавливает создание запросов на слияние, но нет способа принять слияниезапрос, который не следует правилам, которые вы хотите.