Continuous integration gitlab中每个作业都有多个on_故障事件?
Gitlab ci提供了“何时:发生故障”错误处理程序。如果我想为每个作业指定不同的处理程序,该怎么办?因为如果任何前一个作业失败,则会触发on failure。基本上,如果我为每个作业设置处理程序,如果一个作业失败,那么所有处理程序都将启动。如何避免这种情况 我认为目前没有任何方法可以做到这一点,但gitlab repo上存在一个公开问题,要求提供一些类似的功能:。如果实现,它将允许您指定应该为哪个失败的步骤运行哪个步骤 但在此之前,控制错误处理的唯一方法是在步骤脚本中执行,如下所示:Continuous integration gitlab中每个作业都有多个on_故障事件?,continuous-integration,gitlab,gitlab-ci,gitlab-ci-runner,gitlab-api,Continuous Integration,Gitlab,Gitlab Ci,Gitlab Ci Runner,Gitlab Api,Gitlab ci提供了“何时:发生故障”错误处理程序。如果我想为每个作业指定不同的处理程序,该怎么办?因为如果任何前一个作业失败,则会触发on failure。基本上,如果我为每个作业设置处理程序,如果一个作业失败,那么所有处理程序都将启动。如何避免这种情况 我认为目前没有任何方法可以做到这一点,但gitlab repo上存在一个公开问题,要求提供一些类似的功能:。如果实现,它将允许您指定应该为哪个失败的步骤运行哪个步骤 但在此之前,控制错误处理的唯一方法是在步骤脚本中执行,如下所示: ./s
./script_that_fails.sh || FAILED=true
if [ $FAILED ]; then
./error_handling_script.sh
fi
对于一个特定的工作失败,我只成功地处理了一个失败的工作 这有点棘手,我在失败时创建一个工件,在
on_failure
作业中,我尝试调用工件并执行一个脚本来处理失败。如果工件不存在,那么我回显一条简单的消息。我在过去10分钟内发现了这个解决方法,因此可以进行优化,但它确实起到了作用
有了它,您就可以使用特定的on_failure
作业来处理不同作业的故障
stages:
- stage1
- stage1:failure
- stage2
- stage2:failure
job1:
stage: stage1
script:
- echo "FAIL" > JOB1
- ...fail something
artifacts:
when: on_failure
paths:
- JOB1
job1:failure:
stage: stage2:failure
script:
- cat JOB1 && some_script_to_handle_failure || echo "Not a JOB1 Failure"
when: on_failure
job2:
stage: stage2
script:
- echo "FAIL" > JOB2
# Won't be execute since job1 fail
artifacts:
when: on_failure
paths:
- JOB2
job2:failure:
stage: stage2:failure
script:
- cat JOB2 && some_script_to_handle_failure || echo "Not a JOB2 Failure"
# Will echo "Not a JOB2 Failure" since JOB2 artifact doesn't exist.
when: on_failure
希望能有所帮助。谢谢您的选择!