Jenkinsfile失败了一步,然后继续进行其他操作

时间:2019-03-08 16:16:10

标签: jenkins jenkins-plugins

我有一个这样的Jenkins文件:

pipeline {
    agent any

    options {
        buildDiscarder(logRotator(numToKeepStr: '7'))
        disableConcurrentBuilds()
        timeout(time: 10, unit: 'MINUTES')
        timestamps()
    }

    stages {
        stage('Admin') {
            steps {
                script {
                    try {
                        result = "FAIL"
                    } catch(error) {
                        result = "FAIL"
                    }
                }
            }
        }
        stage('Normal') {
            steps {
                script {
                    try {
                sh("echo 'hi'")
                    } catch(error) {

                    }
                }
            }
        }
    }
}

如何使第一步失败并使其显示为红色,并使管道继续执行更多步骤?

我已经查看了所有的SO答案,但无法使其正常工作。

设置result = "FAIL"不会导致该步骤失败。我该怎么做,但要继续下一步?

2 个答案:

答案 0 :(得分:1)

您可以通过为全局詹金斯变量currentBuild设置新值来将构建状态标记为失败。该变量具有3个状态:SUCCESS(绿色),FAILURE(红色)和UNSTABLE(黄色)。 catch应该阻止构建退出,因此您可以设置currentBuild的状态并继续。

           try {
               //so something
            } catch(error) {
                //mark build as failed
                currentBuild.result = 'FAILURE'
            }
        }

我认为这应该有效。遗憾的是,我没有办法验证此atm。如果它不起作用,请告诉我。

答案 1 :(得分:0)

据我所知,我们可以执行以下相同的操作。

  1. 使用脚本步骤和try-catch块

    stage('someStage') {
    steps {
        script {
            try {
                //Do something
            } catch (err) {
                echo err
            }
        }
        echo currentBuild.result = 'FAILURE'
      }
    }
    
  2. 您可以使用propagation:false,它在构建步骤中可用。像下面这样

    stage("example") {
        b = build(job: "example-job", propagate: false).result
        if(b == 'FAILURE') {
            echo "First job failed"
            currentBuild.result = 'FAILURE' // of FAILURE
        }
    }
    stage("test") {
        build("test-job")
    }
    

链接:
   https://jenkins.io/doc/pipeline/steps/pipeline-build-step/

https://medium.com/@Lenkovits/jenkins-pipelines-and-their-dirty-secrets-1-9e535cd603f4