Jenkinsfile中If Else布尔判断无法进入else分支问题
Jenkins布尔参数比较无法进入else分支的解决办法
问题出在你把布尔参数TOGGLE用字符串插值"${TOGGLE}"包裹后进行判断了。在Groovy里,哪怕布尔值是false,转成字符串后是"false",而Groovy会把任何非空字符串都视为true,所以不管你选没勾选这个布尔参数,if ("${TOGGLE}")都会走true分支,永远进不了else。
修复方法很简单:直接用布尔变量本身判断,不要转成字符串。
修改后的完整Jenkinsfile代码:
agent any parameters{ string( name: "s_Project_Branch_Name", defaultValue: "master", description: "输入分支名称") } stages { stage('示例') { input { message "确认使用${params.s_Project_Branch_Name}分支部署到生产环境?" ok "确认" parameters { string(name: 'PERSON', defaultValue: 'master', description: '输入名称') booleanParam(name: "TOGGLE", defaultValue: false, description: "勾选此框继续部署。") } } steps { script{ echo '字符串比较' if ("${PERSON}" == "${params.s_Project_Branch_Name}") { echo '仅在master分支执行此逻辑' } else { echo '在其他分支执行此逻辑' currentBuild.result = "FAILURE" } } script{ echo '布尔值比较' echo "${TOGGLE}" // 关键改动:直接用TOGGLE变量判断,不要转成字符串 if (TOGGLE) { echo '仅当布尔值为true时执行' } else { error('仅当布尔值为false时执行') currentBuild.result = "FAILURE" } } } } } }
额外提醒:如果是从params里取布尔参数(input里的参数也会存入params),也可以直接用params.TOGGLE判断,效果完全一致,都是直接操作布尔类型变量,不会出现字符串转义导致的判断异常。
内容的提问来源于stack exchange,提问作者indayush
相关产品推荐
相关产品推荐

