jenkins - 如果阶段设置构建失败/不稳定状态,如何退出 Jenkins 管道?

标签 jenkins groovy jenkins-pipeline jenkins-groovy

我有一个带有 stage1 的声明性 Jenkins 管道, stage2 , stage3等等。我想停止stage2从运行 if stage1设置构建不稳定/失败。

我知道我可以停止 stage1 中的步骤从使用 return 运行当构建不成功但找不到可以退出管道而不运行以下阶段的方法时 stage1
这是我所拥有的:

    stage('stage1') {
            steps {
                script{
                    //somesteps
                    if ("${stdout}" == "1"){
                    currentBuild.result = 'UNSTABLE'
                    return
                    } //if
                    //somesteps
            } //script
        } //steps
    } //stage

    // run only when stage1 is success
    stage('stage2'){
        when {
            expression { 
             params.name ==~ /x|y/
            }
        }
        steps {
            script{
                    //stage2 steps
            }
        }
    }

如果 params.name ==~ /z/第 3 阶段将跳过第 2 阶段执行

注意:我不能在 stage1 中包含 stage2/3/.. 中的步骤。应该是这样的。基于构建参数 stage2/3/4... 将在 stage1 之后调用

最佳答案

您可以在一个阶段使用 post 退出,如下所示:

pipeline {
    stages {
        stage('stage 1') {
            steps {
                 //step 1
            }
        }
        stage('stage 2') {
            steps {
                script{ 
                    //step 2
                }
            }
            post{
                success {
                }
                failure {
                    script{
                        sh "exit 1"
                        //or
                        error "Failed, exiting now..."
                    }
                }
                aborted {
                }
                unstable {
                    script{
                           sh "exit 1"
                          //or
                          error "Unstable, exiting now..."                    
                     }
                }
            }
        }
    }
}

这将中止构建并且作业不会进一步运行。

关于jenkins - 如果阶段设置构建失败/不稳定状态,如何退出 Jenkins 管道?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51637782/

相关文章:

java - 结合groovy和java编译报错(使用maven)

Groovy, "try-with-resources"构造替代方案

groovy - 将命令行参数传递给 Groovy 脚本

jenkins - 从 jenkins 管道 blueocean 手动更新提交和分支属性

java - 如何使用 Jenkins secret 文件凭据作为 Jenkins 插件的输入?

java - 在 Jenkins 服务器中作为作业运行 Selenium 代码时, Selenium 代码未打开 firefox 浏览器

jenkins - 在 Jenkinsfile 中创建时间戳

docker - 尝试在 unix :///var/run/docker. sock 连接到 Docker 守护进程套接字时获得权限被拒绝:

bash - 为什么 Jenkins 管道返回 -@tmp/durable-56090643/script.sh 4 : FSUM7728 bad ${} modifier for shell command?

intellij-idea - 在 IntelliJ IDEA 中配置 Groovy SDK