Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Jenkins continue pipeline on failed stage

I have a jenkins setup with a bunch of pipelines. I wrote a new pipeline which can start all pipelines at once. I would like to build other stages, even if one of them fails.

The script currently looks like this

stage 'CentOS6'
build 'centos6.testing'

stage 'CentOS7'
build 'centos7.testing'

stage 'Debian7'
build 'debian7-x64.testing'

stage 'Debian8'
build 'debian8-x64.testing'

The build scripts itself contain the node they should run on.

How can the script continue with the following stages even if one of them fails.

Cheers

like image 902
raddirad Avatar asked Mar 11 '23 11:03

raddirad


2 Answers

If they should be run in a sequence you can do something like this:

def buildResult= 'success'
try{
  build 'centos6.testing'
}catch(e){
   buildResult = 'failure'
}
currentBuild.result = buildResult

If they should be run in parallell you just run them: https://www.cloudbees.com/blog/parallelism-and-distributed-builds-jenkins

like image 152
MaTePe Avatar answered Mar 15 '23 20:03

MaTePe


If you use the parallel step, this should work as you expect by default, as the failFast option, which aborts the job if any of the parallel branches fail, defaults to false.

For example:

parallel(
    centos6: { build 'centos6.testing' },
    centos7: { build 'centos7.testing' },
    debian7: { build 'debian7-x64.testing' },
    debian8: { build 'debian8-x64.testing' }
)
like image 43
Christopher Orr Avatar answered Mar 15 '23 22:03

Christopher Orr