在我的 GitLab 管道中,如何为失败的作业触发通知作业,但仍让剩余的作业在此之后继续?

问题描述 投票:0回答:1

管道应如何工作

我的 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”添加到作业中,以便管道可以继续,但这导致通知作业未被触发。

gitlab gitlab-ci
1个回答
0
投票

作业的默认

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

    

© www.soinside.com 2019 - 2024. All rights reserved.