# #gitlab #continuous-integration #yaml #config
Вопрос:
В моем проекте определены следующие этапы gitlab-config.yaml
:
stages:
- Prepare
- Report
- Static Analysis
- Unit Test
- Integration Test Prep
- Integration Tests
- Deploy
Предыдущая стадия Deploy
есть Integration Tests
, и все задания в рамках этой стадии не допускаются к сбою (что по умолчанию в соответствии с документами).
У меня есть несколько заданий развертывания, которые развертываются в разных средах. В моем задании по развертыванию производства используется следующая логика:
rules:
- if: $DEPLOY_ENV == "production" amp;amp; $CI_COMMIT_BRANCH == "production"
when: always
Моя проблема с текущей настройкой заключается в том, что, несмотря на то, что задания интеграционных тестов не могут завершиться неудачно, даже если они это сделают, стадия развертывания производства все еще достигнута.
Похоже, что использование always
переопределяет тот факт, что задания предыдущего этапа не могут завершиться неудачно.
Как я могу запретить выполнение задания производственного развертывания, если какое-либо из предыдущих заданий интеграционных тестов завершится неудачно?
Комментарии:
1. Есть ли причина, по которой вы должны использовать
always
опцию в конфигурации when? В противном случае я бы рекомендовал использоватьon_success
вместо этого.2. @пэт, если ты хочешь написать это в качестве ответа, я с радостью удалю свой и отдам тебе победу.
Ответ №1:
Решение состоит в том, чтобы использовать on_success
вместо always
(документы):
rules:
- if: $DEPLOY_ENV == "production" amp;amp; $CI_COMMIT_BRANCH == "production"
when: on_success