Jenkins管道脚本动态创建

时间:2016-10-17 09:01:23

标签: jenkins groovy jenkins-pipeline

我正在使用jenkins管道项目。在脚本中,我想以动态方式编写 parallel 块,因为节点的数量可以改变。例如,从中:

parallel(
node1: {
    node(){
        stage1()
        stage2()
        ...
    }
},
node2: {
    node(){
        stage1()
        stage2()
        ...
    }
},
...
)

这样的事情

for (int i = 0; i < $NODE_NUMBER; i++) {
  "node${i}": {
    node (’namenode-' + ${i}) {
      something()
    }
}

但是这种方法不起作用,Groovy / Jenkins对这种语法不满意。有人可以提出更好的方法吗?

1 个答案:

答案 0 :(得分:4)

您可以先定义branches之类的节点映射,然后将其作为parallel branches执行。

def numNodes = 4
def branches = [:]

for(int i = 0; i < numNodes; i++) {
    branches["node${i}"] = {
        node("namenode-${i}") {
            something()
        }
    }
}
parallel branches