Jenkins pipeline if else not working

后端 未结 3 452

I am creating a sample jenkins pipeline, here is the code.

pipeline {
    agent any 

    stages {    
        stage(\'test\') { 
            steps { 
                   


        
3条回答
  •  刺人心
    刺人心 (楼主)
    2021-01-30 05:41

    your first try is using declarative pipelines, and the second working one is using scripted pipelines. you need to enclose steps in a steps declaration, and you can't use if as a top-level step in declarative, so you need to wrap it in a script step. here's a working declarative version:

    pipeline {
        agent any
    
        stages {
            stage('test') {
                steps {
                    sh 'echo hello'
                }
            }
            stage('test1') {
                steps {
                    sh 'echo $TEST'
                }
            }
            stage('test3') {
                steps {
                    script {
                        if (env.BRANCH_NAME == 'master') {
                            echo 'I only execute on the master branch'
                        } else {
                            echo 'I execute elsewhere'
                        }
                    }
                }
            }
        }
    }
    

    you can simplify this and potentially avoid the if statement (as long as you don't need the else) by using "when". See "when directive" at https://jenkins.io/doc/book/pipeline/syntax/. you can also validate jenkinsfiles using the jenkins rest api. it's super sweet. have fun with declarative pipelines in jenkins!

提交回复
热议问题