在Jenkins管道DSL中迭代groovy列表

在Jenkins管道DSL中迭代groovy列表,groovy,jenkins-workflow,jenkins-pipeline,Groovy,Jenkins Workflow,Jenkins Pipeline,我的管道中有一个简单的groovy列表,其中添加了一些映射: def componentList = [] def componentMapEntry1 = [:] componentMapEntry1['componentName']="Dashboard_Core" componentList << componentMapEntry1 def componentMapEntry2 = [:] componentMapEntry2['componentName']="Dash

我的管道中有一个简单的groovy列表,其中添加了一些映射:

def componentList = []

def componentMapEntry1 = [:]
componentMapEntry1['componentName']="Dashboard_Core"
componentList << componentMapEntry1

def componentMapEntry2 = [:]
componentMapEntry2['componentName']="Dashboard_Equities"
componentList << componentMapEntry2

def cme3 = [:]
cme3["componentName"] = "home"
componentList << cme3

我可以把它打印出来

println componentList

我可以执行for循环并迭代列表

for (i = 0; i <componentList.size(); i++) {
    println componentList[i]
}
到目前为止一切都很好

当我尝试使用标准groovy迭代器时,出现了一个问题:

componentList.each {
    println "adding "+it.componentName
}
在这种情况下,我只得到第一个元素

[Pipeline] echo
adding Dashboard_Core

为什么我在这里只得到第一个元素?我已经尝试过几次了,使用.each()似乎只返回第一个元素。当我在groovy命令行上运行相同的代码时,它会自然地运行。.each{}函数是否以某种方式被覆盖?

闭包上的
each
方法在管道脚本中还不起作用。修复正在进行中。同时,对循环使用C风格的

我怀疑。。。是否:
[[componentName:'Dashboard_Core'],[componentName:'Dashboard_Equities'],[componentName:'home'].每个{println“添加$it.componentName”}
都能正常工作?那么
['Dashboard\u Core'、'Dashboard\u Equities'、'home']呢。收集{[componentName:it]}。每个{println“adding$it.componentName”}
?第一个没有,它只显示第一个元素,就像我的一样。第二个在沙盒环境中失败:org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException:未分类字段java.util.LinkedHashMap$Entry ComponentName groovy在服务器上的版本有多旧?我的钱花在了古董上……我很确定管道使用了内置的groovy库为Jenkins服务。我们正在运行Jenkins 1.642.3,尝试将其打印出来或创建一个单独的方法,并使其@noncpissue仍然不起作用(管道插件2.4)。有人知道这个问题何时会解决吗?
for (i = 0; i <componentList.size(); i++) {
    println componentList[i]
}
[Pipeline] echo
{componentName=Dashboard_Core}
[Pipeline] echo
{componentName=Dashboard_Equities}
[Pipeline] echo
{componentName=home}
componentList.each {
    println "adding "+it.componentName
}
[Pipeline] echo
adding Dashboard_Core