有没有可能的方法/插件可以在Jenkins作业中止时运行构建后脚本。我确实看到后构建插件提供了一个执行一组脚本的操作,但这些脚本只能在两个选项上运行,要么是成功的作业,要么是失败的作业。
ar7v8xwq1#
这个问题的答案是肯定的here。即使作业中止,Post Build Task插件也会运行。使用它来搜索日志文本“Build was aborted”,您可以指定要运行的shell脚本。很管用。:-)
fv2wmkja2#
对于声明式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 { script{ echo "Damn it. I was aborted!" } } } }
fivyi3re3#
据我所知,如果一个构建被中止,就没有办法再执行其中的任何构建步骤(或后构建步骤)了--这是有道理的,这就是我对“中止”的期望。您可以做的是创建另一个作业来监视第一个作业的状态,并在它被中止时触发(例如,请参阅BuildResultTrigger插件)。另一种解决方案可能是创建一个“ Package 器”作业,它将第一个作业作为构建步骤调用-这样您就可以在完成后执行其他步骤,例如检查其状态,即使它被中止。
zsohkypk4#
如果你使用脚本管道,你总是可以使用try/catch/finally设置,其中构建在try块中执行,而构建后的步骤在finally块中。这样,即使构建失败,也会执行构建后的步骤。
try { build here }catch(FlowInterruptedException interruptEx){ catch exception here } finally { postBuild(parameters) }
4条答案
按热度按时间ar7v8xwq1#
这个问题的答案是肯定的here。
即使作业中止,Post Build Task插件也会运行。
使用它来搜索日志文本“Build was aborted”,您可以指定要运行的shell脚本。
很管用。:-)
fv2wmkja2#
对于声明式Jenkins管道,可以如下实现:
fivyi3re3#
据我所知,如果一个构建被中止,就没有办法再执行其中的任何构建步骤(或后构建步骤)了--这是有道理的,这就是我对“中止”的期望。
您可以做的是创建另一个作业来监视第一个作业的状态,并在它被中止时触发(例如,请参阅BuildResultTrigger插件)。
另一种解决方案可能是创建一个“ Package 器”作业,它将第一个作业作为构建步骤调用-这样您就可以在完成后执行其他步骤,例如检查其状态,即使它被中止。
zsohkypk4#
如果你使用脚本管道,你总是可以使用try/catch/finally设置,其中构建在try块中执行,而构建后的步骤在finally块中。这样,即使构建失败,也会执行构建后的步骤。