如何在詹金斯脚本管道作业中使用布尔参数编写条件步骤?

Dav*_*988 6 if-statement jenkins jenkins-pipeline

我的脚本中的这种情况总是被评估为true并显示“是的,等于是在运行阶段”

stage('test cond'){  
    if(env.BUILD_TESTING2 == true){  
        echo "Yes equal - running the stage"
    } else {
        echo "Not equal - skipping the stage"
    }
}  
Run Code Online (Sandbox Code Playgroud)

即使我通过设置env.BUILD_TESTING2 = false开始构建,它仍然会输入条件并显示“是的-运行阶段”。

我也尝试过这种语法:

stage('test cond'){  
    if(env.BUILD_TESTING2){  
        echo "Yes equal - running the stage"
    } else {
        echo "Not equal - skipping the stage"
    }
}
Run Code Online (Sandbox Code Playgroud)

但是它仍然总是被评估为true

如何在Jenkins脚本化管道中编写带有布尔参数的条件步骤?

Krz*_*łek 12

您需要使用toBoolean()函数将此环境变量(字符串类型)转换为布尔值:

stage('test cond'){  
    if(env.BUILD_TESTING2.toBoolean()){  
        echo "Yes equal - running the stage"
    } else {
        echo "Not equal - skipping the stage"
    }
}
Run Code Online (Sandbox Code Playgroud)


Wel*_*ahr 10

通过 params 而不是 env 更好地引用参数,这样它们就有了正确的对象类型。所以使用:

stage('test cond') {
    if(params.BUILD_TESTING2) {
        echo "Yes equal - running the stage"
    } else {
        echo "Not equal - skipping the stage"
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 谢谢@Davis8988。问题是“如何在 Jenkins 脚本化管道中编写带有布尔参数的条件步骤?” 答案是“在条件步骤中通过 params 而不是 env 引用参数” (3认同)

Mar*_*ark 10

如果您使用 booleanParam,我知道的最干净的方法是将when指令与表达式一起使用。

stage('test cond') {
     when { expression { return params.BUILD_TESTING2 } }
     steps {
        sh 'echo "running the stage"'
    }
}
Run Code Online (Sandbox Code Playgroud)