-
New Feature
-
Resolution: Unresolved
-
Minor
-
None
We're using a declarative pipeline that happens to use
def {} // and script {} // and parallel objects
def projectName(projectPrefix, flavor) { return "${projectPrefix} ${flavor}" } def templateProjectNode (project, flavor, publish) { return { node { stage(projectName(project, flavor)) { try { sh "hostname" script { sh label: "Compile + Test + Publish", script: "hostname" } } finally { junit "*/target/test-reports/**/*.xml" archiveArtifacts "*/target/test-reports/**" archiveArtifacts "*/target/*/*report/**" } } } } } def generateProjects (projectList) { def projects = projectList.collectEntries { [(projectName(it[0], it[1])): templateProjectNode(it[0], it[1], it[2])] } parallel projects } pipeline { stages { stage("a") { steps { sh "hostname" } } stage("b") { steps { sh "hostname" } } stage("c") { steps { sh "hostname" } } stage("Compile + Test + Publish") { parallel { stage("Frontend") { steps { sh "hostname" } } stage("Magic") { steps { script { projectList = [ ["D", "QQ", true], ["D", "RR", true], ["E", "QQ", true], ["F", "QQ", true], ["F", "RR", true], ["G", "QQ", true], ["H", "QQ", false], ] generateProjects(projectList) } } } } } stage("j") { steps { sh "hostname" } } stage("k") { steps { sh "hostname" } } stage("l") { when { branch "master" } steps { sh "hostname" } } } }
Expected results:
the graph should generally have the same shape as the final graph. The first graph is perhaps the most problematic, although the second is also wrong.