Запустить ЦИКЛ FOR одновременно в Groovy?

#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 моменту оценки параллельных шагов. Это укусило меня несколько раз.