我是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: BTW,如果有三个作业,比如j1,j2,j3。 j1和j2首先并行执行,当其中一个完成时,将执行j3。那怎么办呢?
答案 0 :(得分:0)
我弄明白了为什么。
for (int i = 0; i < getJobs().size(); i++) {
def j=i
jobBranches["branch_${i}"] = {
build job : getJobs()[j]
}
然后它会起作用!