#multithreading #for-loop #groovy #jenkins-pipeline #jenkins-groovy
Вопрос:
Я пытаюсь найти варианты, где мы можем запустить цикл FOR одновременно в Groovy? У меня есть файл Дженкинса, и я хотел бы, чтобы цикл for выполнялся там параллельно
Что — то вроде следующего кода. Я бы хотел, чтобы все эти циклы for могли выполняться параллельно. Порядок — это не проблема. Просто шаги внутри цикла for должны быть завершены.
vars=[*,*,*,*,*] for i in vars: '''steps'''
Ответ №1:
Вам нужно использовать директиву parallel. Это то, что вы можете сделать для цикла for. Вы должны уметь использовать этот код и адаптировать его к своему
def testList = ["a", "b", "c", "d"] def branches = [:] for (int i = 0; i lt; 4 ; i ) { int index=i, branch = i 1 branches["branch_${branch}"] = { sh "echo 'node: ${NODE_NAME}, index: ${index}, i: ${i}, testListVal: " testList[index] "'" } } parallel branches
Комментарии:
1. Обратите внимание, что
i
это всегда4
будет оцениваться наsh
шаге, так как оно будет ссылаться на переменную цикла, которая была обновлена к4
моменту оценки параллельных шагов. Это укусило меня несколько раз.