Jenkins 2.7 startet alle Jobs, die mit einem Schlüsselwort als Pipeline beginnen

1870
J. Doe

Ich versuche, alle Jobs mit einer voreingestellten Zeichenfolge als Pipeline in Jenkins 2.7 zu starten. Bisher habe ich es geschafft, diesen groovigen Code zu schreiben:

node { jobs = hudson.model.Hudson.instance.getAllItems(FreeStyleProject) for (job in jobs) { // here was an "if" statement: if (job.getFullName() =~ /my regex/) { stage job.getFullName() build job: job.getFullName(), propagate: false } } } 

Bei jedem Start bekomme ich jedoch java.io.NotSerializableExceptioneinen Job, und es wird nur ein Jobmatch (von derzeit zwei) ausgeführt.

Was mache ich falsch? :(

0

1 Antwort auf die Frage

1
kristian

Hier ein Beispiel, wie ich das machen würde:

import hudson.model.*;  // get all jobs which exists  jobs = Hudson.instance.getAllItems(FreeStyleProject);  // iterate through the jobs for (j in jobs) {  // define a pattern, which jobs I do not want to run def pattern = 'trunk'; def m = j.getName() =~ pattern;  // if pattern does not match, then run the job if (!m) { // first check, if job is buildable if (j instanceof BuildableItem) { // run that job j.scheduleBuild(); } } } 

Ich habe meinen Code kommentiert, das sollte Ihnen helfen.

Vielen Dank. Auf diese Weise werden die besagten Jobs tatsächlich ausgelöst. Mit "obj.scheduleBuild ()" werden jedoch die Erstellungszeit und der Zustand nicht in die Pipeline-Ansicht zurückgegeben. Es scheint, dass ich die `build`-Funktion von pipeline verwenden muss, aber es gibt mir eine Ausnahme ... J. Doe vor 8 Jahren 0