生成并行分支导致作业挂起

Generating parallel branches causes job to hang

我是 groovy 和工作流插件的新手,所以这也许是显而易见的。 Q1: 我尝试 运行 在一个视图下并行读取作业。我喜欢这样:

jenkins = Hudson.instance
parallel getBranches()

@NonCPS def getBranches() {
def jobBranches = [:] 
for (int i = 0; i < getJobs().size(); i++) {

        jobBranches["branch_${i}"] = {
            build job : getJobs()[i]
        }
    
}
return jobBranches
}

@NonCPS def getJobs() {
def jobArray = []
jenkins.instance.getView("view_A").items.each{jobArray.add(it.displayName)}
return jobArray
}

我得到了:

但是如果我这样写:

jenkins = Hudson.instance

def jobBranches = [:] 
for (int i = 0; i < getJobs().size(); i++) {

        jobBranches["branch_${i}"] = {
            build job : getJobs()[i]
        }
    
}
parallel jobBranches

@NonCPS def getJobs() {
def jobArray = []
jenkins.instance.getView("view_A").items.each{jobArray.add(it.displayName)}
return jobArray
}

然后我得到了这样的东西:

我做错了什么?或者有没有其他方法可以完成同样的事情。

Q2: 顺便说一句,如果有三个工作,比如j1、j2、j3。 j1 和 j2 先并行执行,当其中一个完成时,将执行 j3。那么该怎么做呢?

我明白为什么了。

for (int i = 0; i < getJobs().size(); i++) {
    def j=i 
    jobBranches["branch_${i}"] = {
        build job : getJobs()[j]
    }

那就可以了!