我正在 Gitlab 上运行一个有 2 个阶段的管道。第一阶段有 2 个工作,其中一个有
allow_failure: true
。这有效,因为它失败了并且我看到一个橙色感叹号。另一个也失败了,我得到了一个红十字。
第二阶段有1个作业不应该被执行,因为一个可能不会失败的任务失败了。仍然被执行。我究竟做错了什么?我的理解是,默认情况下,在所有先前阶段都 100% 成功之前,第二个、第三个等阶段的作业永远不会被执行(手动或自动)。
这是我的 gitlab-ci.yml:
stages:
- stage1
- stage2
job1:
stage: stage1
script:
- <something>
allow_failure: true
job2:
stage: stage1
script:
- <something>
job3:
stage: stage2
script:
- <something>
你理解对了,如果job2失败,下一阶段就不应该运行,参见文档中的示例,它与你的yaml基本相同https://docs.gitlab.com/ee/ci/yaml/#允许失败
由于您的 gitlab-ci.yml 显然是一个简化版本,因此我没有看到这里有任何问题,但也许您遗漏了一些会影响此问题的内容。 job2 是手动作业吗? job2 是否扩展了可能具有“allow_failure: true”的其他作业?我建议在 job2 中添加“allow_failure: false”。
考虑添加:
时间:on_success
第二阶段的工作,根据官方文件:
on_success(默认):仅当早期阶段没有作业失败或allow_failure:true时才运行作业。