У меня есть главная ветвь, которая должна получать коммиты только путем слияния с ней ветки "release / xxxxx" или слияния с ней ветки "hotfix / xxxxx".
Конвейер для ветвь релиза создает образ docker и публикует его с помощью тега «бета».
Конвейер для ветки релиза создает образ docker и публикует его с помощью тега «исправление».
конвейер для мастера просто переназначает либо «бета» на «стабильный» (когда ветка выпуска была объединена с ведущим), либо «исправление» на «стабильный» (когда ветка исправления была объединена с главным). Затем он также создает новый тег git для этой версии и выпуск в gitlab. Наконец, образ docker развернут.
В настоящее время происходит следующее:
- Создается запрос на слияние для слияния "release / xxxxx" с "master".
- Конвейер запускается автоматически (до того, как запрос на слияние был принят и объединен).
- Задание docker анализирует переменную
CI_MERGE_REQUEST_SOURCE_BRANCH_NAME
, чтобы определить, что исходная ветвь запроса на слияние была ветвью выпуска. - Затем задание docker повторно помечает "beta" как "последний".
- Задание git добавляет тег версии и выпуск gitlab в проект.
- Задание развертывания развертывает образ docker.
Когда запрос на слияние окончательно принят, происходит следующее:
- Конвейер запускается снова.
- Задание docker анализирует
CI_MERGE_REQUEST_SOURCE_BRANCH_NAME
, которое теперь пусто и поэтому не может определить исходную ветвь для этого слияния. - Сбой задания docker.
Я думаю, совершенно очевидно, что я не хочу запускать все эти задания (особенно задание развертывания ) до того, как запрос на слияние будет принят.
Но я не могу придумать хорошего способа запустить конвейер на главном сервере после того, как запрос на слияние будет принят, и затем все еще иметь возможность определить ветвь источника.