Jenkinsfile中if条件分支无法执行问题排查求助
Jenkinsfile中if条件无法匹配的原因与修复
问题根源
你在参数定义里的第一个选项是'c '(注意末尾带有一个空格),但在if判断中使用的是无空格的'c'。字符串匹配是严格区分字符的,带空格的'c '和无空格的'c'属于两个不同的字符串,因此第一个if块永远无法触发。
验证方法
可以在代码中添加一行输出,直观查看参数的实际值:
echo "Run_For的实际值: '${Run_For}'"
执行后会看到输出里的c后面跟着空格,就能确认问题所在。
修复方案(二选一即可)
修正参数定义:去掉选项中
c后面的空格properties([parameters([choice(choices: ['c', 'a', 'd'], name: 'Run_For', description: 'Select \'c\' for clone and upload the cloned repos to S3 \n Select \'a\' for archive the repos . \n Select \'d\' for the deletion of the Repos')])])处理参数值:判断前先去除字符串首尾的空格
if (Run_For.trim().equals('c')) { println(" into the if ") echo " yaya " }
修正后的完整代码示例
properties([parameters([choice(choices: ['c', 'a', 'd'], name: 'Run_For', description: 'Select \'c\' for clone and upload the cloned repos to S3 \n Select \'a\' for archive the repos . \n Select \'d\' for the deletion of the Repos')])]) gagan = params.Run_For node { stage('Example') { choice = "c" echo Run_For println Run_For.getClass() if (Run_For.equals('c')) { println(" into the if ") echo " yaya " } if (choice == "c") { println(" into the 2nd if ") echo " yaya 2 " } } }
内容的提问来源于stack exchange,提问作者Gagan
相关产品推荐
相关产品推荐

