当Jenkins作业中止时,是否有可能的方法/插件可以运行后期构建脚本。 我确实看到post build插件提供了一个执行一组脚本的操作,但这些脚本只能在成功作业或失败作业的2个选项上运行。
答案 0 :(得分:21)
这个问题得到了积极回答here。
即使作业被中止,也会运行Post Build Task插件。
使用它来搜索日志文本中的“Build was aborted”,您可以指定要运行的shell脚本。
像魅力一样工作。 : - )
答案 1 :(得分:2)
据我所知,如果构建中止,则无法再在其中执行任何构建步骤(或构建后构建步骤) - 这是有道理的,这就是我所期望的“中止”。
您可以做的是创建另一个监视第一个状态的作业,并在作业中止时触发(例如,请参阅BuildResultTrigger插件)。
另一种解决方案可能是创建一个“包装”作业,它将第一个作为构建步骤调用 - 这样您就可以在完成后执行其他步骤,例如检查其状态,即使它已中止。
答案 2 :(得分:0)
如果使用脚本化管道,则始终可以使用try / catch / finally设置,其中在try块中执行构建,而在build块中进行postbuild步骤。这样,即使构建失败,也会执行构建后步骤。
try {
build here
} catch(FlowInterruptedException interruptEx){
catch exception here
}最后{
postBuild(parameters)
}
答案 3 :(得分:0)
对于声明性Jenkins管道,您可以通过以下方式实现:
pipeline {
agent any
options {
timeout(time: 2, unit: 'MINUTES') // abort on exceeding the timeout
}
stages {
stage('Echo 1') {
steps {
echo 'Hello World'
}
}
stage('Sleep'){
steps {
sh 'sleep 180'
}
}
stage('Wake up'){
steps {
echo "Woken up"
}
}
}
// this post part is executed if job is aborted
post {
aborted {
echo "Damn it. I was aborted!"
}
}
}