1


Я пытаюсь запустить несколько костюмов с параллельными испытаниями в качестве части рабочего процесса. Поэтому я создаю карту, кладу туда пару закрытий и передаю ее на параллельный шаг. Проблема, с которой я столкнулся, связана с именем отчета HTML. После выполнения я вижу несколько идентичных ссылок «HTML-отчет», поэтому я не могу открыть конкретный отчет - все они имеют одинаковое имя. Я попытался сделать это имя уникальным, но эти попытки не увенчались успехом. Кто-нибудь сталкивался с подобной вещью?Jenkins Workflow Параллельный шаг и замыкания

def testExecutions = [:] 

def testExecution = { 
    node { 
     //code to run tests 

     publishHTML(target: [allowMissing: false, 
          alwaysLinkToLastBuild: false, 
          keepAll: true, reportDir: 'target/reports', 
          reportFiles: 'index.html', 
          reportName: "HTML Report " + it) 
    } 
} 

for (int i = 0; i < 2; i++) { 
    final k = i 

    testExecutions.put("tests $k", {testExecution(k)}) 
} 

parallel(testExecutions) 

ответ

0

Возможно, функция testExecution() не имеет параметра it?

def testExecution(it) = { 
    node { 
     .... 
    } 
} 
+0

Неа, это неявный параметр - [неявный параметра] (http://groovy-lang.org/closures.html) – Oleg

0

Похоже, что ваш узел находится на неправильном уровне. Теперь это поднимает действительно интересный вопрос.

Мое предположение было бы , когда ваши работники фактически получили бы узел для выполнения k или он уже был бы оценен мастером, что означает, что с точки зрения параллельного вызова закрывающий неявный аргумент всегда будет равный 1. (хотя я считаю себя не достаточно образованным с Дженкинс процессом и заводным сказать наверняка)

Эта версия должна работать для вас

def testExecutions = [:] 

def testExecution = { 
    println "HTML Report " + it 
} 

for (int i = 0; i < 2; i++) { 
    final k = i 

    testExecutions.put("tests $k", {node{testExecution(k)}}) 
} 

parallel(testExecutions) 
+0

Спасибо, он работает d для случая, когда имеется команда 'println'. Однако, если в первую очередь выполняются тесты, а затем создается отчет, он получает имя «HMTL Report 1» для обоих случаев. Вероятно, это потому, что оценка k. Я закончил тем, что добавил время, чтобы сообщить название – Oleg