我的 GitLab 管道中有以下工作:
Job_A:
script: # script doing things
retry:
max: 2
Job_B:
script: # script doing things
retry:
max: 2
Job_C:
script: # script doing things
retry:
max: 2
每个作业都有一个通知作业,如下所示:
notify_job_A_failure:
script: # script sending alert to MS Teams
when: on_failure
needs:
- Job_A
allow_failure: true
问题是,如果Job_A 失败,通知作业被触发但是管道在此之后停止并且 Job_B 和 Job_C 不运行。这种情况有解决办法吗?
我尝试将“allow_failure: true”添加到作业中,以便管道可以继续,但这导致通知作业未被触发。
作业的默认
when
是 on_success
。 这意味着只有前一阶段或已完成的作业成功完成后,作业才会运行。 由于您已经对每个“通知程序”作业进行了更改,因此这些作业仍然在失败的作业上运行。 但是,您还没有对作业 B 和 C 执行此操作。您可以将 need
这些作业运行更改为 when
,这样无论以前的作业发生什么情况,它们都会运行。 我还假设这些作业处于不同的阶段,因为如果它们处于同一阶段,它们将与作业 A 同时运行。 如果您不需要作业 B 和 C 在作业 A 之后运行,您也可以将它们放在同一阶段以使其工作。 但是,如果您依赖作业 A 在作业 B 之前完成并且作业 B 在作业 C 之前完成,只需将 always
键更改为 when
。always
https://docs.gitlab.com/ee/ci/yaml/#when