2016-05-31 10 views
1

Kennt jemand eine Möglichkeit, einen einzelnen Jenkins-Job in Teile aufzuteilen und sie gleichzeitig/parallel auszuführen?Jenkins-Job gleichzeitig aufteilen

Zum Beispiel, wenn ich einen Job habe, die Tests ausführt, die 30 Minuten dauern, ist es eine Möglichkeit, diese Arbeit in drei 10 Minuten laufen brechen kann, die zur gleichen Zeit laufen, aber in drei verschiedenen Instanzen

Danke voraus.

+0

Teilen Sie die Aufgaben in 3 Jobs und führen sie auf 3 verschiedenen Instanzen? – SilentMonk

+1

möglich duplizieren - http://StackOverflow.com/Questions/37540591/Parallel-Test-Execution-Jenkins – SilentMonk

Antwort

0

Erstellen Sie neue Jobs, nennen Sie es f.E. Test. Sie sollten den Jobtyp basierend auf dem Typ des Root-Jobs auswählen.

Wenn Sie einen Maven Jobtyp haben, können Sie den Arbeitsbereich-Verzeichnis unter build gesetzt -> fortgeschritten. Freestyle Job-Typ hat diese Option direkt unter Projekt ->erweiterte.

Stellen Sie für alle Aufträge das gleiche Arbeitsverzeichnis ein. Der Stammjob wird kompiliert und alle anderen Jobs verwenden dasselbe Arbeitsverzeichnis, um die kompilierte Ausgabe zu verwenden.

Fügen Sie für die Testaufträge die Testausführung als Build-Schritt hinzu und unterscheiden Sie hier die Tests, die ausgeführt werden sollen.

Bearbeiten Sie Ihren Root-Job und entfernen Sie dort die Ausführung der lang laufenden Tests. Sie können jetzt die drei Jobs aufrufen. Aber Sie brauchen die Parameterized Trigger Plugin.

Der Nachteil dieser Art, Sie brauchen genug Jenkins-Executoren, um alle Tests Jobs zu behandeln.

+0

Dank @CSchulz, in der fortgeschrittenen Build in einem Maven-Projekt habe ich auch ein Kontrollkästchen "Build Module parallel" bemerkt . Wäre das nützlich? Prost. – colin

+0

Ich denke nicht, dass es Ihnen helfen wird, weil Sie die Tests in eigenen Modulen trennen müssen. – CSchulz

0

Wenn Sie Jenkins 1.x verwenden, würde ich vorschlagen, die multijob- Plugin versucht - ich habe es erfolgreich einen einzigen Auftrag in einem übergeordneten Job und mehrere untergeordnete Jobs aufgeteilt verwendet:

https://wiki.jenkins-ci.org/display/JENKINS/Multijob+Plugin

Wenn Sie Jenkins 2.x verwenden, dann versuchen, die Pipeline-Funktion aus :) Es parallele Aufgaben sehr einfach macht laufen:

https://github.com/jenkinsci/pipeline-plugin/blob/master/TUTORIAL.md#creating-multiple-threads

Wenn Sie wollen, ich glaube, Sie auch Pipelines in Jenkins können 1 . x mittels eines Plugins. Ich habe mir das jedoch nicht angesehen.