Dav*_*san 4 groovy jenkins-pipeline
我的Jenkinsfile中有:
def foo = ["1", "2", "3"]
def parallelStagesFromMap = foo.collectEntries {
["Build ${it}" : generateStage(it)]
}
def generateStage(bar) {
return {
stage("Build ${bar}") {
echo "Building for ${bar}"
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后,我可以并行使用它们,parallel parallelStagesFromMap但是现在我要特别调用一个,例如:
generateStage("a") 只是被跳过了...我错过了什么吗?
您缺少闭包调用。您的generateStage(name)方法返回一个闭包,并且此闭包不会隐式调用。(它与并行阶段一起工作,因为parallelmethod期望一个映射,其中每个条目值都是一个闭合值,因此它会遍历所有映射条目并调用收集的闭合值)。
这是您的示例使用的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()
}
Run Code Online (Sandbox Code Playgroud)
这是运行此示例管道后的Blue Ocean UI外观:
| 归档时间: |
|
| 查看次数: |
855 次 |
| 最近记录: |