我的Jenkins文件中有
def foo = ["1", "2", "3"]
def parallelStagesFromMap = foo.collectEntries {
["Build ${it}" : generateStage(it)]
}
def generateStage(bar) {
return {
stage("Build ${bar}") {
echo "Building for ${bar}"
}
}
}
然后我可以将它们与并行parallel parallelStagesFromMap
一起使用,但是现在我尝试特别调用一个,例如:
generateStage("a")
,只是被跳过了……我错过了什么吗?
答案 0 :(得分:3)
您缺少闭包调用。您的generateStage(name)
方法返回一个闭包,并且不会隐式调用此闭包。 (它可用于并行阶段,因为parallel
方法期望一个映射,其中每个条目值都是一个闭包,因此它将迭代所有映射条目并调用收集的闭包)。
这是您的示例使用generateStage(name)
方法向管道添加非并行阶段的样子:
def foo = ["1", "2", "3"]
def parallelStagesFromMap = foo.collectEntries {
["Build ${it}" : generateStage(it)]
}
def generateStage(bar) {
return {
stage("Build ${bar}") {
echo "Building for ${bar}"
}
}
}
node {
parallel parallelStagesFromMap
generateStage("skipped") // no invocation, stage is skipped
generateStage("nonparallel").call()
}
这是运行此示例管道后的Blue Ocean UI外观: