2017-09-02 53 views
1

我想下面的代碼爲我的參數化管道作業。我想開始從參數中獲取並行運行的作業名稱。 而那些工作也參數化的工作。如何啓動參數化管道作業來觸發並行構建。我也嘗試使用列表,但它沒有工作。任何人都可以建議我我要去哪裏錯了參數化管道作業開始並行構建

def stepsForParallel = [:] 
node { 
    JOBS=JOB_NAMES.split(','); 
    for (job in JOBS) { 
     def stepName = "running_${job}" 
     stepsForParallel[stepName] = { -> build job: "runnning_$job", parameters: [string(name: 'BRANCH',value: $BRANCH),string(name: 'CHANGE_NUMBER',value: $CHANGE_NUMBER)] } 
    } 

parallel stepsForParallel 

}

我喜歡輸出:

[Pipeline] parallel 
[Pipeline] [running_a] { (Branch: running_a) 
[Pipeline] [running_b] { (Branch: running_b) 
[Pipeline] [running_a] } 
[running_a] Failed in branch running_a 
[Pipeline] [running_b } 
[running_b] Failed in branch running_b 
[Pipeline] } 
[Pipeline] End of Pipeline 

an exception which occurred: 

in field itr 
in field target 
in field continue_ 
in field parent 
in field parent 
in field parent 
in field parent 
in field parent 
in field parent 
in field capture 
in field def 
in field locals 
in field capture 
in field def 
in field closures 
in object [email protected] 
Caused: java.io.NotSerializableException: java.util.AbstractList$Itr 
at  org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:860) 
at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1032) 
at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:988) 

如何啓動參數流水線作業來觸發並行編譯。我也嘗試使用列表,但它沒有工作。任何人都可以建議我在哪裏我錯了

+0

試着去除'for循環'周圍的'node {}'。 –

回答

1

它與JENKINS-34645。 嘗試刪除node {}for循環並將迭代移入@NonCPS函數。像這樣的東西

@NonCPS 
def stepsForParallel(def jobsName) { 
    def steps = [:] 
    jobs = jobsName.split(',') 
    for (job in jobs) { 
     def stepName = "running_${job}" 
     steps[stepName] = { -> 
      build job: "runnning_$job", parameters: [string(name: 'BRANCH', value: BRANCH), string(name: 'CHANGE_NUMBER', value: CHANGE_NUMBER)] 
     } 
    } 
    return steps 
} 

parallel stepsForParallel(JOB_NAMES) 
+0

這是工作,但不是預期的!即使作業已完成,也不會返回並行作業的狀態 – no1

+0

@ no1在您的答案中,我沒有看到您期望獲得調用構建的結果狀態。這需要採取不同的方法。 –

+0

不,我的意思是,完成後,工作應該退出,但它凍結! – no1

相關問題