我有一个包含多个阶段的Jenkins管道,但是由于某些问题,在其中一个阶段中,它可能不必要地运行了更长的时间。
我不想中止整个管道构建并跳过下一个阶段,而是要杀死其他阶段不依赖的特定阶段。
有没有办法杀死詹金斯管道的特定阶段?
答案 0 :(得分:1)
有一些方法可以跳过一个阶段。但是我不确定是否有选择杀死长期运行的阶段。我只是添加一个条件表达式来运行该阶段,否则,也许您可以将一个超时条件包裹在try..catch block
中,以便长时间运行的不必要阶段可以跳过并继续进行所需的其他阶段,如下所示。 / p>
pipeline {
agent any
stages {
stage('stage1') {
steps {
script {
try {
timeout(time: 2, unit: 'NANOSECONDS')
echo "do your stuff"
} catch (Exception e) {
echo "Ended the never ending stage and proceeding to the next stage"
}
}
}
}
stage('stage2') {
steps {
script {
echo "Hi Stage2"
}
}
}
}
}
答案 1 :(得分:0)
您可以尝试在脚本化管道中使用“ try / catch”块。即使在特定阶段出现错误,詹金斯也将继续执行下一个阶段。
node {
stage('Example') {
try {
sh 'exit 1'
}
catch (exc) {
echo 'Something failed, I should sound the klaxons!'
throw
}
}
}
您可以在此处参考文档:https://jenkins.io/doc/book/pipeline/syntax/