2017-09-02 2 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

関連する問題