Как сделать так, чтобы закрытие остановило сборку как прерванную, не выглядя как сбой?
В моем исходном файле Jenkins есть что-то вроде этого:
node() {
println 'should print'
if (shouldStop()) {
return
}
println 'should NOT print'
}
# Output
should print
Возврат изблок узла завершает сборку с любым текущим состоянием и не выполняет дополнительные действия.
Если у меня есть замыкание в миксе, то нежелательный код все еще выполняется
withMyAction(closure) {
def result
try {
prepareEnv()
result = closure()
} finally {
cleanUp()
}
return result
}
node() {
println 'should print'
withMyAction {
if (shouldStop()) {
return
}
}
println 'should NOT print'
}
# Output
should print
should NOT print
Этокажется, что у меня есть варианты
- Остановить через
throw new Exception
или error()
- Обернуть мои нижестоящие разделы задания в
if status == ...
Isесть подход, в котором я могу изящно остановить сборку на ранней стадии, не используя return
из Jenkinsfile в качестве моего подхода?