我正在Jenkins脚本管道中注入Active Choices参数值。
传递到活动选择参数块的PFB样本值:
return['ABC','DEF','GHI',JKL']
PFB我的示例脚本:
node(){
selectModName()
}
def selectModName(){
stage 'Multi selection'
String[] mods = "${modName}".split(',')
modsz = mods.size()
echo ''+modsz+''
for(mod in mods){
if (modsz == null || modsz == 0){
echo 'There is nothing to be printed'
} else {
echo ''+mod+' is name of the module n'
}
}
}
当我通过大于或等于1个值(按预期工作(时,执行else
块。但是,当我不传递任何参数并按下build时,if
块并没有执行其逻辑。
有趣的是,当没有传递值时,size()
返回1
而不是0
(echo ''+modsz+''
(。
如何使if
块在没有传递值的情况下执行其逻辑?
您的代码总是跳到"else"块,因为
"".split(',')
生成一个带有单个空字符串的数组。
assert "".split(',').size() == 1
assert "".splti(',') == [""] as String[]
当您使用具有多个值选择的活动选择参数,并且您没有选择任何内容时,您的变量名称将存储一个空字符串。您应该首先检查modName
参数是否不是空字符串,并且仅在其他情况下拆分和显示值。
node(){
selectModName()
}
def selectModName(){
stage 'Multi selection'
if (modName) {
String[] mods = modName?.split(',')
for (mod in mods) {
echo " ${mod} is name of the module"
}
} else {
echo 'There is nothing to be printed'
}
}