Gitlab-CI: запуск этапа на основе статуса предыдущего этапа - PullRequest
0 голосов
/ 02 сентября 2018

введите описание изображения здесь

Здравствуйте. Я использую версию Gitlab 10.x Enterprise.

Это в контексте производственного развертывания в среде с восемью серверами. Требуется сначала выполнить развертывание на одном сервере, а затем через пару дней выполнить развертывание на оставшихся серверах, нажав всего одну кнопку.

Этапы трубопровода: Создание тегов-релизов -> Production-OneServer-Deployment -> OneButtonPush -> DeploytoAllServers

Вопрос:

Как связать зависимость между этапами " OneButtonPush " и " DeploytoAllServers " ?. Этап « DeploytoAllServers » должен запускаться только тогда, когда состояние задания на этапе « OneButtonPush » является успешным. Этап « DeploytoAllServers » будет иметь параллельные задания для развертывания на каждом сервере.

Я сделал несколько попыток на основе документации Gitlab CI, но безуспешно. Также может ли концепция Rolling развертывания использоваться в контексте GitLab-CI.

Спасибо!

1 Ответ

0 голосов
/ 03 сентября 2018

В Gitlab CI этапы выполняются один за другим. Каждый этап может иметь несколько заданий , которые выполняются параллельно.

В соответствии с вашим сценарием использования вам понадобятся разные этапы: выпуск-тег-создание, Production-OneServer-Deployment, OneButtonPush и DeploytoAllServers. Для определенных заданий можно использовать ручные триггеры (в вашем случае OneButtonPush), указав when: manual в определении задания.

По умолчанию, если задание ожидает ручного запуска, задания последующих этапов начнут выполняться, если задание с ручным запуском выполнено успешно. Чтобы изменить это поведение, нужно будет использовать allow_failure: false. Подробности режима на allow_failure более здесь

...