I'm trying to use the following code to execute builds, and in the end, execute post build actions when builds were successful. Still, I get a MultipleCompilationErrorsException, saying that my try block is Not a valid section definition. Please help, I tried a lot reorganize the block but can't seem to be able to solve the issue.
#!/usr/bin/env groovy pipeline{ agent any try { stages{ stage("Parallel 1") { steps { parallel ( 'firstTask' : { build( "DSL-Controll-Demo-Fibonacci-1" ) }, 'secondTask' : { build( "DSL-Controll-Demo-Fibonacci-2" ) } ) } } stage("Feature") { steps { build( "DSL-Controll-Demo-Fibonacci-5" ) build( "DSL-Controll-Demo-Fibonacci-6" ) } } stage("Parallel 2") { steps{ parallel ( "thirdTask" : { build( "DSL-Controll-Demo-Fibonacci-3" ) }, "forthTask" : { build( "DSL-Controll-Demo-Fibonacci-4" ) } ) } } } } catch(all) { currentBuild.result = 'FAILURE' } if(currentBuild.result != 'FAILURE') { stages{ stage("Post Build") { steps { build("DSL-Controll-Demo-Fibonacci-7") } } } } }
try like this (no pun intended btw)
script { try { sh 'do your stuff' } catch (Exception e) { echo 'Exception occurred: ' + e.toString() sh 'Handle the exception!' } }
The key is to put try...catch in a script block in declarative pipeline syntax. Then it will work. This might be useful if you want to say continue pipeline execution despite failure (eg: test failed, still you need reports..)
You're using the declarative style of specifying your pipeline, so you must not use try/catch blocks (which are for Scripted Pipelines), but the post section. See: https://jenkins.io/doc/book/pipeline/syntax/#post-conditions
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With