作为工作流程的一部分,我正在尝试并行测试并行测试。所以我创建了一个地图,放了几个闭包并将其传递给并行步骤。我面临的问题与HTML报告的名称有关。执行后,我看到一些相同的“HTML报告”链接,因此我无法打开特定报告 - 所有报告都具有相同的名称。我试图让这个名字与众不同,但这些尝试都没有成功。有没有人遇到类似的事情?
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 :(得分:0)
也许testExecution()函数缺少it
参数?
def testExecution(it) = {
node {
....
}
}
答案 1 :(得分:0)
您的节点似乎处于错误的级别。现在这提出了一个非常有趣的问题。
我的猜测是当你的工人实际上会让节点执行k或者它已经被主人评估了,这意味着从并行调用的角度来看隐式闭包论证总是等于1.(虽然我认为自己没有足够的教育和詹金斯的工作流程和groovy肯定地说)
这个版本应该适合你
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)