考虑GitLab CI / CD管道,该管道包括两个随后的阶段:A和B。
如果阶段A成功,那么我希望阶段B自动执行。 但是,如果阶段A失败,我不希望阶段B自动执行,但是仍然有可能手动强制执行阶段B。
我该如何实现?
答案 0 :(得分:1)
我至少可以看到两种方法来实现这一目标(当管道失败时,您将需要再次手动触发整个管道,而不仅仅是一个阶段):
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
触发。您始终可以使用任何自定义变量或predefined来设置不同的条件。
答案 1 :(得分:0)