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

标签 groovy jenkins-workflow jenkins-pipeline

我的管道中有一个简单的 groovy 列表,它添加了一些 map :

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

执行作业时,我验证大小
echo "size of list "+componentList.size()

...
[Pipeline] echo
size of list 3

我可以把 list 打印出来
println componentList

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

我可以做一个 for 循环并迭代列表
for (i = 0; i <componentList.size(); i++) {
    println componentList[i]
}

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

到目前为止一切都很好。

当我尝试使用标准 groovy 迭代器时出现问题:
componentList.each {
    println "adding "+it.componentName
}

在这种情况下,我只得到第一个元素
[Pipeline] echo
adding Dashboard_Core

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

最佳答案

each闭包上的方法在流水线脚本中不起作用。正在进行修复。同时使用 C 风格 for环形。

关于groovy - 在 Jenkins Pipeline DSL 中迭代一个常规列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36360097/

相关文章:

grails - 在Grails中使用域实例查找子域

hibernate - grails/groovy 域类中 TimeDuration 的 Hibernate 类型是否正确?

jenkins - 如何在 Jenkins 工作流(管道)插件中执行作业 dsl 脚本

grails - 使用 Controller 的触发器执行 Quartz 作业

groovy - 在哪里正确初始化 Groovy 元类?

Jenkins Workflow Multibranch允许指定Jenkinsfile路径

jenkins - Jenkins Pipeline访问环境变量

groovy - 如何在 Jenkins 管道中转义 AWS CLI 中的引号?

jenkins - Groovy .each 只迭代一次

jenkins - 使用 Jenkins 获取 HTTP ERROR 404