GitLab CD / CD: есть ли способ разрешить принудительное выполнение этапа B конвейера вручную, если предыдущий этап A завершился неудачей, иначе выполнить этап B автоматически? - PullRequest
1 голос
/ 06 апреля 2020

Рассмотрим конвейер GitLab CI / CD, состоящий из двух последовательных этапов: A и B.

Если этап A завершается успешно, я хочу, чтобы этап B выполнялся автоматически. Но если этап A завершается неудачно, я не хочу, чтобы этап B выполнялся автоматически, но все же есть возможность принудительно выполнить этап B. Вручную.

Как мне этого добиться?

Ответы [ 2 ]

1 голос
/ 07 апреля 2020

Есть как минимум два способа добиться этого (когда ваш конвейер выходит из строя, вам нужно будет снова вручную запустить весь конвейер, а не только один этап):

  1. Пометить задание на этапе 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

Обратите внимание, что результатом всего конвейера будет не удалось, как показано ниже. Always execute second job for manual trigger 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
...

Результат всего конвейера будет быть пройдено с предупреждениями , как показано ниже. Allow failure

$CI_PIPELINE_SOURCE == "web" означает, что конвейер запущен из GitLab gui Project page -> CI/CD -> Run Pipeline. Вы всегда можете установить различные условия с любой переменной custom или предопределенным .

0 голосов
/ 07 апреля 2020

Вы не можете сделать это с этапами.

Задания следующего этапа выполняются после успешного завершения заданий предыдущего этапа.

Это за https://docs.gitlab.com/ee/ci/yaml/#stages

Невозможно запустить сцену вручную.

...