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

Jos*_*ose 19 post-build jenkins jenkins-plugins

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

小智 21

这个问题的回答是肯定在这里.

后生成任务插件,即使工作被中止运行.

使用它来搜索日志文本"Build was aborted",您可以指定要运行的shell脚本.

奇迹般有效.:-)

  • 链接的答案不再存在:/ (2认同)

t_s*_*gub 6

对于声明式 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!"
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 此外,当作业中止时,会运行“post”步骤的“always”、“unsuccessful”和“cleanup”条件中的指令(https://www.jenkins.io/doc/book/pipeline/syntax/#后置条件)。 (2认同)

Ako*_*rth 2

据我所知,如果构建被中止,则无法再执行其中的任何构建步骤(或后构建步骤) - 这是有道理的,这就是我所期望的“中止”。

您可以做的是创建另一个作业来监视第一个作业的状态,并在它被中止时触发(例如,请参阅BuildResultTrigger插件)。

另一种解决方案可能是创建一个“包装器”作业,它将第一个作业调用为构建步骤 - 这样您就可以在完成后执行其他步骤,例如检查其状态,即使它已中止。