Сценарий конвейера Дженкинса, созданный динамически

#jenkins #groovy #jenkins-pipeline

#дженкинс #groovy #дженкинс-конвейер

Вопрос:

Я использую проект конвейера Дженкинса. В сценарии я хотел бы написать параллельный блок динамическим способом, поскольку количество узлов может меняться. Например, из этого:

 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:

Вы можете сначала определить сопоставление узлов как branches , а затем выполнить их как parallel branches .

 def numNodes = 4
def branches = [:]

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

Комментарии:

1. Не могли бы вы предоставить полное рабочее решение? Похоже, это больше не работает, не так ли?