Jenkins声明式流水线:列表for循环遍历失败问题
问题分析与解决方案
问题根源
你混淆了Groovy局部变量和Jenkins环境变量上下文env:
- 你定义的
NFS_VERS是Groovy局部列表变量,并未存入env环境变量中 - 循环时错误遍历
env.NFS_VERS,由于该环境变量不存在,Jenkins会做隐式处理,导致整个列表被当作单个循环元素,最终每次echo都输出完整列表内容
修正代码
将循环遍历的目标改为你定义的Groovy局部变量NFS_VERS即可,同时注意Jenkins环境变量均为字符串类型,建议显式转换数值:
def CURR_VER def NFS_VERS = [2, 3, 4, 4.1] for (i in NFS_VERS) { // 显式将数值转为字符串存入环境变量 env.CURR_VER = String.valueOf(i) echo env.CURR_VER // 若无需后续使用环境变量,直接用Groovy局部变量更高效 // CURR_VER = i // echo "${CURR_VER}" }
额外说明
- Jenkins的
env对象存储的所有环境变量值均为字符串类型,直接赋值数值会自动转换,但显式转换可避免潜在类型问题 - 如果只是临时使用变量,优先用Groovy局部变量,减少环境变量的序列化/反序列化开销
内容的提问来源于stack exchange,提问作者Ian Mayoh
相关产品推荐
相关产品推荐

