如何杀死詹金斯管道的舞台?

时间:2020-04-07 12:42:11

标签: jenkins jenkins-pipeline

我有一个包含多个阶段的Jenkins管道,但是由于某些问题,在其中一个阶段中,它可能不必要地运行了更长的时间。

我不想中止整个管道构建并跳过下一个阶段,而是要杀死其他阶段不依赖的特定阶段。

有没有办法杀死詹金斯管道的特定阶段?

2 个答案:

答案 0 :(得分:1)

有一些方法可以跳过一个阶段。但是我不确定是否有选择杀死长期运行的阶段。我只是添加一个条件表达式来运行该阶段,否则,也许您可​​以将一个超时条件包裹在try..catch block中,以便长时间运行的不必要阶段可以跳过并继续进行所需的其他阶段,如下所示。 / p>

pipeline {
   agent any
   stages {
        stage('stage1') {
          steps {
            script {
              try {
                  timeout(time: 2, unit: 'NANOSECONDS')
                  echo "do your stuff"
              } catch (Exception e) {
                  echo "Ended the never ending stage and proceeding to the next stage"
              }
            }              
          }
        }     
        stage('stage2') {
          steps {
            script {
                echo "Hi Stage2"
            }
          }
        }           
    }
}

或检查this page for conditional step/stage

答案 1 :(得分:0)

您可以尝试在脚本化管道中使用“ try / catch”块。即使在特定阶段出现错误,詹金斯也将继续执行下一个阶段。

node {
    stage('Example') {
        try {
            sh 'exit 1'
        }
        catch (exc) {
            echo 'Something failed, I should sound the klaxons!'
            throw
        }
    }
}

您可以在此处参考文档:https://jenkins.io/doc/book/pipeline/syntax/