Блок Try-catch в сценарии конвейера Дженкинса
Я пытаюсь использовать следующий код для выполнения сборок и, в конце концов, выполнять действия после сборки, когда сборки были успешными. Тем не менее, я получаю MultipleCompilationErrorsException, говоря, что мой блок try не является допустимым определением раздела. Пожалуйста, помогите, я много пытался реорганизовать блок, но, похоже, не могу решить проблему.
#!/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")
}
}
}
}
}
2 ответов
вы используете декларативный стиль указания конвейера, поэтому вы не должны использовать блоки try/catch (которые предназначены для сценариев конвейеров), но раздел post. Смотри:https://jenkins.io/doc/book/pipeline/syntax/#post-conditions
попробуйте так (Не каламбур предназначен кстати)
script {
try {
sh 'do your stuff'
} catch (Exception e) {
sh 'Handle the exception!'
}
}
ключ должен поставить try...catch в блоке скрипта в декларативном синтаксисе конвейера. Тогда это сработает. Это может быть полезно, если вы хотите сказать продолжить выполнение конвейера, несмотря на сбой (например: тест не удался, все еще нужны отчеты..)