在Jenkins Pipeline DSL中迭代一个常规列表 [英] Iterating a groovy list in Jenkins Pipeline DSL

查看:119
本文介绍了在Jenkins Pipeline DSL中迭代一个常规列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的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

执行作业时,我验证大小

  echolist of size+ componentList.size()





  [Pipeline] echo 
列表3的大小

我可以将它列印出来

  println componentList 

...

 [Pipeline] echo 
[{componentName = Dashboard_Core},{componentName = Dashboard_Equities},{componentName = home}]
pre>

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

pre $ code> for(i = 0; i< componentList.size(); i ++){
println componentList [i]
}

...

  [Pipeline] echo 
{componentName = Dashboard_Core }
[Pipeline] echo
{componentName = Dashboard_Equities}
[Pipeline] echo
{componentName = home}

到目前为止,所有的w埃尔。



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

  componentList.each {
printlnadded+ it.componentName
}

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

  [Pipeline] echo 
added Dashboard_Core

code>

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

解决方案

每个 关闭的方法在Pipeline脚本中还不能工作。修复正在进行中。同时为循环使用C风格


I have a simple groovy list in my Pipeline that adds some maps:

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

When job is executed, I validate size

echo "size of list "+componentList.size()

...

[Pipeline] echo
size of list 3

I can print it out the list

println componentList

...

[Pipeline] echo
[{componentName=Dashboard_Core}, {componentName=Dashboard_Equities}, {componentName=home}]

I can do a for loop and iterate the list

for (i = 0; i <componentList.size(); i++) {
    println componentList[i]
}

...

[Pipeline] echo
{componentName=Dashboard_Core}
[Pipeline] echo
{componentName=Dashboard_Equities}
[Pipeline] echo
{componentName=home}

So far all's well.

Problem comes in when I try to use standard groovy iterator:

componentList.each {
    println "adding "+it.componentName
}

In this case I only get the first element

[Pipeline] echo
adding Dashboard_Core

Why would I only get the first element here? I've tried this several times and using .each() only seems to return first element. When I run the same code at groovy command line, it naturally iterates as groovy would expect. Is the .each{ } function getting overwritten somehow?

解决方案

The each method on a closure does not yet work in Pipeline script. A fix is in progress. Meanwhile use a C-style for loop.

这篇关于在Jenkins Pipeline DSL中迭代一个常规列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆