在Jenkins作业中止时运行Post Build脚本

qncylg1j  于 2023-10-17  发布在  Jenkins
关注(0)|答案(4)|浏览(273)

有没有可能的方法/插件可以在Jenkins作业中止时运行构建后脚本。我确实看到后构建插件提供了一个执行一组脚本的操作,但这些脚本只能在两个选项上运行,要么是成功的作业,要么是失败的作业。

ar7v8xwq

ar7v8xwq1#

这个问题的答案是肯定的here
即使作业中止,Post Build Task插件也会运行。
使用它来搜索日志文本“Build was aborted”,您可以指定要运行的shell脚本。
很管用。:-)

fv2wmkja

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!"
            }
        }
    }
}
fivyi3re

fivyi3re3#

据我所知,如果一个构建被中止,就没有办法再执行其中的任何构建步骤(或后构建步骤)了--这是有道理的,这就是我对“中止”的期望。
您可以做的是创建另一个作业来监视第一个作业的状态,并在它被中止时触发(例如,请参阅BuildResultTrigger插件)。
另一种解决方案可能是创建一个“ Package 器”作业,它将第一个作业作为构建步骤调用-这样您就可以在完成后执行其他步骤,例如检查其状态,即使它被中止。

zsohkypk

zsohkypk4#

如果你使用脚本管道,你总是可以使用try/catch/finally设置,其中构建在try块中执行,而构建后的步骤在finally块中。这样,即使构建失败,也会执行构建后的步骤。

try {
        build here
}catch(FlowInterruptedException interruptEx){

    catch exception here
} finally {

    postBuild(parameters)

}

相关问题