我试图了解 Jenkins 管道脚本中发生的情况。我有这段代码,它采用一个值列表(最初是字符串,但更改为尝试简化/故障排除),迭代列表,将每个值存储到变量中并输出:
def CURR_VER
def NFS_VERS = [2, 3, 4, 4.1]
for (i in env.NFS_VERS) {
env.CURR_VER = i
echo env.CURR_VER
}
运行时,Jenkins 日志显示 echo 不仅输出值,还输出括号、逗号等(参见屏幕截图)。
尝试更改 for 循环的格式,但似乎没有解决问题。
您正在迭代环境变量
env.NFS_VERS
,而不是定义的原始列表 NFS_VERS
。在管道中(但不是在多分支管道中!)Jenkins 自动将 Groovy 变量传播到环境变量中,但它们始终被解释为字符串。所以你的脚本只需要一个字符串并回显它的每个字符。
试试这个:
def CURR_VER
def NFS_VERS = [2, 3, 4, 4.1]
for (i in NFS_VERS) {
env.CURR_VER = i
echo env.CURR_VER
}
在多分支管道中,与您的脚本相同的脚本将不会打印任何内容,因为
env.NFS_VERS
将为空。
此外,如果您需要将某些内容打印到构建日志中,我建议使用
println
而不是 echo
,这样日志就不会被其他命令名称堵塞。