如何在jenkinsfile中添加条件步骤

z9smfwbn  于 2022-11-02  发布在  Jenkins
关注(0)|答案(1)|浏览(257)

我试图在Jenkinsfile中执行多个步骤,这些步骤包含shell命令,这需要时间,直到我得到最终输出。
由于这些步骤相互依赖,我如何添加条件,如果第一个cmd的输出等于某个值(“会话已启动”),则执行第二个,如果不等于,则打印某个消息=(“字符串”)。

stage() {

    agent {
        docker {
            label 'MyDocker',
            image 'myIMG'
        }
    }

    steps {
        sh label: 'Creating container', script: 'docker run --privileged -d -p 4750:4723 --name mycontainer myimg'
        sh label: 'Building ', script: 'docker exec -it mycontainer test'
    }
}
ohfgkhjo

ohfgkhjo1#

如果在步骤级别需要这样的条件,则必须使用script步骤并编写一些Groovy代码。

stage() { 
    agent {
        docker {
            label 'MyDocker',
            image 'myIMG'
        }
    }
    steps {
        script {
            def output = sh returnStdout: true, label: 'Creating container', script: 'docker run --privileged -d -p 4750:4723 --name mycontainer myimg'
            if( output.indexOf('session started') >= 0 ) {
                sh label: 'Building ', script: 'docker exec -it mycontainer test'
            }
            else {
                echo "This is the output: $output"
            }
        }
    }
}

我添加了参数returnStdout: true,用于返回shell命令的输出。
为了检查输出,我使用了一个子串搜索output.indexOf,以使代码更健壮。当然,你可以用output == 'session started'代替它来进行1:1的比较。

相关问题