首页 > 解决方案 > 如何简单地执行键的值,其中值是元素列表,每个元素执行应该在jenkins groovy中并行执行

问题描述

我有如下的json {

“数据1”:[“苹果”,“芒果”,“葡萄”],“数据2”:[“猕猴桃”,“木瓜”]

}

我想执行为

node{
stage1 {

// Here I need to get values of key ("data1") and execute each element of the list in parallel
}

stage2 {
// Here I need to get values of key ("data2") and execute each element of the list in parallel
}

}

标签: jenkinsgroovyjenkins-pipeline

解决方案


所以parallel需要一个Map<String, Closure>(其中字符串是日志中显示的步骤的标签,闭包是执行的操作)。在您的情况下,您有一个列表并希望将其转换为地图。您可以使用 for 循环或使用collectEntries函数来执行此操作。

data = [data1: ["apple","mango","grapes"], data2: ["kiwi","papaya"]]

node {
    stage("stage1"){
        parallel data.data1.collectEntries{fruit -> [fruit, { println("processing $fruit") }]}
    }
}

如果你运行它,它将输出:

[apple]  processing apple
[mango]  processing mango
[grapes] processing grapes

推荐阅读