在Jenkins Pipeline DSL中迭代一个groovy列表

Nei*_*eil 3 groovy jenkins-workflow jenkins-pipeline

我的Pipeline中有一个简单的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
Run Code Online (Sandbox Code Playgroud)

执行作业时,我验证大小

echo "size of list "+componentList.size()
Run Code Online (Sandbox Code Playgroud)

...

[Pipeline] echo
size of list 3
Run Code Online (Sandbox Code Playgroud)

我可以把它打印出来

println componentList
Run Code Online (Sandbox Code Playgroud)

...

[Pipeline] echo
[{componentName=Dashboard_Core}, {componentName=Dashboard_Equities}, {componentName=home}]
Run Code Online (Sandbox Code Playgroud)

我可以做一个for循环并迭代列表

for (i = 0; i <componentList.size(); i++) {
    println componentList[i]
}
Run Code Online (Sandbox Code Playgroud)

...

[Pipeline] echo
{componentName=Dashboard_Core}
[Pipeline] echo
{componentName=Dashboard_Equities}
[Pipeline] echo
{componentName=home}
Run Code Online (Sandbox Code Playgroud)

到目前为止一切都很好.

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

componentList.each {
    println "adding "+it.componentName
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我只获得第一个元素

[Pipeline] echo
adding Dashboard_Core
Run Code Online (Sandbox Code Playgroud)

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

Jes*_*ick 6

each闭包上的方法在Pipeline脚本中还不起作用.修复正在进行中.同时使用C风格的for循环.