Je tente de reproduire cette fonctionnalité du plug-in de flux Build: https://wiki.jenkins-ci.org/display/JENKINS/Build+Flow+Plugin:Jenkins Construire flux Plugin chaîne séquentiellement plusieurs emplois en parallèle
parallel (
{
build("job1")
build("job2")
},
{
build("job5")
build("job6")
}
)
je la tâche DSL suivante:
subjob = "test"
subjob2 = "test2"
series1 = []
series2 = []
subjob = []
["job1","job2"].each{ parameter ->
series1.add({build(subjob, param: parameter)})
}
["job5","job6"].each{ parameter2 ->
series2.add({build(subjob2, param: parameter2)})
}
subjob.add(series1)
subjob.add(series2)
parallel(subjob)
Mon but est d'exécuter un ensemble de travaux 1 & 2 en série et un autre jeu de travaux 5 & 6 en série, mais pour exécuter les deux ensembles de travaux en parallèle. C'est-à-dire que les travaux 1 et 5 démarrent en même temps, puis lorsque le travail 1 termine le travail 2 et lorsque le travail 5 se termine, le travail 6 commence.
Cependant, j'ai essayé un certain nombre de variations sur le code ci-dessus, mais différentes erreurs à chaque fois. Le code ci-dessus donne ce qui suit:
ERROR: Failed to run DSL Script
org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object '[[email protected], [email protected]]' with class 'java.util.ArrayList' to class 'groovy.lang.Closure' due to: groovy.lang.GroovyRuntimeException: failed to invoke constructor: public groovy.lang.Closure(java.lang.Object,java.lang.Object) with arguments: [[email protected], [email protected]] reason: java.lang.InstantiationException
Y a-t-il une meilleure façon de procéder?
Merci, je comprends la théorie maintenant, mais je reçois ce qui suit lors de l'exécution de votre code: java.util.concurrent.ExecutionException: java.lang.NullPointerException: Impossible d'invoquer la méthode call() sur l'objet nul – bazza2000
Wops, mon Mauvais, il devrait être 'series1.each {it()}', par exemple parenthèses au lieu de parenthèses. J'ai mis à jour ma réponse. –
Vous cherchez mieux;), obtenant maintenant 'java.util.concurrent.ExecutionException: groovy.lang.MissingMethodException: Aucune signature de méthode: com.cloudbees.plugins.flow.FlowDelegate.build() est applicable pour les types d'arguments: (java .util.LinkedHashMap, java.util.ArrayList) valeurs: [[param: job1], [Script1 $ _run_closure3 @ 5bc92f8c, Script1 $ _run_closure4 @ 3a163c10]] Solutions possibles: build (java.lang.String), build (Java .util.Map, java.lang.String), fail(), find(), getBuild(), wait() ' – bazza2000