Jenkins Pipeline(流水线) 某个任务构建失败时中止Or继续
最开始我写的pipeline用的是groovy的脚本如下:pipeline{agent anystages{stage("1"){when { expression { return A.contains("1") } }steps{build "1"}}stage("2"){
最开始我写的pipeline用的是groovy的脚本如下:
pipeline{
agent any
stages
{
stage("1"){
when { expression { return A.contains("1") } }
steps
{
build "1"
}
}
stage("2"){
when { expression { return A.contains("2") } }
steps
{
build "2"
}
}
}
}
一直没有遇到问题,直到有一天我发现1构建报错了,导致2没有执行。
当然,如果你的需求是1报错,后续不执行,就不需要往下看了,哈哈哈。
但是我想要的是1报错,仍然继续往下执行完所有的流程,怎么办呢?
最先我查出来的解决办法是这样:
pipeline{
agent any
stages
{
stage("1"){
when { expression { return A.contains("1") } }
steps
{
catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE')
{
build "1"
}
}
}
stage("2"){
when { expression { return A.contains("2") } }
steps
{
build "2"
}
}
}
}
然后我点了构建pipeline,直接执行报错了。。。
Running in Durability level: MAX_SURVIVABILITY
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
WorkflowScript: 98: Invalid parameter “buildResult”, did you mean “null”? @ line 98, column 28.
catchError(buildResult: ‘SUCCESS’, stageResult: ‘FAILURE’)
WorkflowScript: 98: Invalid parameter “stageResult”, did you mean “null”? @ line 98, column 52.
Error(buildResult: ‘SUCCESS’, stageResul
提示没有"buildResult",“stageResult”
之后又是一翻搜索,找到了解决办法如下:
他是这么说的:如果要捕获build步骤的结果,则需要将其放入script块中。
然后改成了如下形式:
pipeline{
agent any
stages
{
stage("1"){
when { expression { return A.contains("1") } }
steps
{
script
{
catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE')
{
build "1"
}
}
}
}
stage("2"){
when { expression { return A.contains("2") } }
steps
{
build "2"
}
}
}
}
再执行就不报错了,而且当1构建失败时,2仍然会继续执行直到整个流水线执行完成。
初次接触流水线,踩了很多坑,感觉要学习的东西还很多,今天也要继续加油啊!!
So keep your head up before your crown falls。
更多推荐
所有评论(0)