如果某些步骤失败,Jenkins管道标记阶段将变得不稳定

时间:2018-10-11 13:52:15

标签: jenkins jenkins-pipeline jenkins-groovy

我目前面临的问题是,如果在这种情况下,如果 有些步骤失败,如果失败,则失败;例如60%的步骤失败。

我的Jenkinsfile当前看起来像这样:

pipeline {
    agent any
    stages {
        stage("stage1") {
            steps {
                echo "prepare some stuff"
            }
        }
        stage("stage2") {
            steps {
                parallel(
                        "step1": {
                            sh 'false'
                        },
                        "step2": {
                            sh 'true'
                        },
                        "step3": {
                            sh 'false'
                        }
                )
            }
        }
        stage('stage3') {
            steps {
                echo "do some other stuff"
            }
        }
    }
}

1 个答案:

答案 0 :(得分:1)

尝试捕获

如果您不希望第二步继续执行第一步,那么您必须在第一步中捕获任何错误。您可以使用 try catch 块来做到这一点。

根据此答案:https://stackoverflow.com/a/43303039/3957754,在声明性管道中不能仅直接使用try。您必须在脚本步骤中包装任意的Groovy代码

stage('Maven Install') {
   steps {
       script {

           echo "Step 1"

           try {
               sh "mvn clean install"
           } catch (Exception err) {
               //increment error count
           } finally {
               //do something
           }
       }

       script {

           echo "Step 2"

           try {
               sh "mvn clean install"
           } catch (Exception err) {
               //increment error count
           } finally {
               //do something
           }
       }       
   }
}

将阶段标记为不稳定/失败

根据官方文档https://jenkins.io/doc/pipeline/tour/post/,您可以使用始终块:

always {
    echo 'One way or another, I have finished'
    //put here your final logic
}

当所有先前阶段都为e时,将执行此块,因此在这里您可以使用错误计数应用一些逻辑并将状态设置为整个构建:

  • currentBuild.result ='成功'
  • currentBuild.result ='失败'