Есть как минимум два способа добиться этого (когда ваш конвейер выходит из строя, вам нужно будет снова вручную запустить весь конвейер, а не только один этап):
- Пометить задание на этапе B когда: всегда для выполнения задания независимо от состояния заданий предыдущих этапов.
firstFailingJob:
stage: test
script:
- echo I will always fail
- exit 1
secondExecuteWhenManualTrigger:
stage: deploy
script:
- echo I should run even when first failed when triggered manually
rules:
- if: '$CI_PIPELINE_SOURCE == "web"'
when: always
- when: on_success
Обратите внимание, что результатом всего конвейера будет не удалось, как показано ниже. 2. Пометьте, возможно, сбойное задание с помощью allow_failure: true , чтобы сбой не повлиял на остальную часть набора CI.
firstFailingJob:
stage: test
script:
- echo I will always fail
- exit 1
rules:
- if: '$CI_PIPELINE_SOURCE == "web"'
allow_failure: true
- allow_failure: false
...
Результат всего конвейера будет быть пройдено с предупреждениями , как показано ниже.
$CI_PIPELINE_SOURCE == "web"
означает, что конвейер запущен из GitLab gui Project page -> CI/CD -> Run Pipeline
. Вы всегда можете установить различные условия с любой переменной custom или предопределенным .