Можно ли допустить сбой сценария в задании CI / CD? - PullRequest
0 голосов
/ 16 апреля 2019

Всего заданий может быть разрешено завершить сбоем

job1:
  stage: test
  script:
    - execute_script_that_will_fail
  allow_failure: true

Возможно ли иметь в серии сценариев тот, который может потерпеть неудачу (а другие - нет)?

job1:
  stage: test
  script:
    - execute_script_that_MAY_fail_and_should_be_marked_somehow_in_this_config_as_such
    - execute_script_that_MUST_NOT_fail

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

Примером может служить развертывание докера с build (не должно завершиться ошибкой), stop контейнера (который может завершиться ошибкой, если контейнер не запущен) и run (который не должен завершиться ошибкой) .

Мой текущий обходной путь - разделить это на отдельные задания, но это ужасный хак:

stages:
  - one
  - two
  - three

one:
  stage: one
  script:
    - execute_script_that_MUST_NOT_fail

two:
  stage: two
  script:
    - execute_script_that_MAY_fail
  allow_failure: true

three:
  stage: three
  script:
    - execute_script_that_MUST_NOT_fail

1 Ответ

0 голосов
/ 23 апреля 2019

Задание не выполняется, если какой-либо из шагов сценария внутри него возвращает состояние сбоя. Таким образом, вы должны предотвратить это, и самый простой способ - добавить || true к шагу (или какую-то запись, как @ahogen предлагает в комментарии):

job1:
  stage: test
  script:
    - execute_script_that_MAY_fail || true
    - execute_script_that_MUST_NOT_fail
...