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

时间:2014-07-30 21:45:39

标签: jenkins jenkins-plugins post-build

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

4 个答案:

答案 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!"
        }
    }
}