Gitlab-CI: запуск этапа развертывания после слияния со ссылкой на исходную ветку - PullRequest
0 голосов
/ 05 ноября 2019

У меня есть n ветвей объектов, которые будут MR и сливаются в ветвь develop.

У меня есть конвейер с 3 этапами:

stages: - feature-push - develop-mr-retag - develop-mr-rollout

feature-push запускается при любом переходе к ветви функции (а не к ветви develop, в которую мы объединяемся). Он будет тестировать, создавать и помещать приложение в образ докера , помеченный именем ветви функции .

Последние два этапа должны выполняться при фиксации в ветке develop послезапрос на слияние утвержден и объединен (при условии, что исходная ветвь прошла стадию добавления функций). Ему нужно развернуть новое изображение на несколько модулей k8s, и ему нужно имя исходной ветви, чтобы найти правильное изображение.

Я хочу использовать для этого ${CI_MERGE_REQUEST_SOURCE_BRANCH_NAME}, но я не думаю, чтопеременная существует для конвейеров, запускаемых после объединения, только в merge_requests конвейерах. Похоже, что они запускаются до утверждения MR, что мне не нужно, поскольку это развертывание.

Возможно ли это или я должен найти другой подход?

** Редактировать:** Чтобы уточнить, мне нужно запустить сборку докера до MR, чтобы знать, что он может успешно построить. Я не хочу просто отбрасывать эту сборку, если она объединяется, поэтому я хочу собрать / отправить до MR и развернуть ранее созданный образ после MR.

1 Ответ

0 голосов
/ 06 ноября 2019

Я ищу то же самое.

В данный момент я анализирую заголовок коммита mergecommit для извлечения исходной ветви и проверяю, что найденная ветвь действительно существует. Вот соответствующий код:

CI_MERGE_REQUEST_SOURCE_BRANCH_NAME=$(sed -r "s/^Merge branch '(.*)' into .*/\1/i"<<<$CI_COMMIT_TITLE)

if [ $(git ls-remote --heads ${CI_REPOSITORY_URL} $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME | wc -l ) -ne 1 ]; then echo "Can't find source branche ${CI_MERGE_REQUEST_SOURCE_BRANCH_NAME})" && exit 1; fi

Но если заголовок коммитов по умолчанию кем-либо изменен, это не будет работать.

...