正在检查Jenkins脚本管道方法中数组中的空指针异常



我正在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'
}
}

最新更新