Wie kann ich einen Jenkins-Job starten, nachdem mehrere gleichzeitige Upstream-Jobs erfolgreich waren?
Um das Schnellste feedback möglich ist, haben wir gelegentlich möchten Jenkins-jobs Parallel laufen. Jenkins hat die Fähigkeit, zu starten, mehrere downstream-jobs (oder 'Gabel' die pipeline) wenn ein Auftrag beendet ist. Aber Jenkins nicht scheinen, um eine Möglichkeit, eine nachgeschaltete job nur zu starten, der alle Zweige der Gabel gelingt (oder 'beitreten' die Gabel wieder zusammen).
Jenkins hat ein "Bauen nach anderen Projekten gebaut werden" - button, aber ich interpretiere das als "start in diesem job, wenn alle upstream-job beendet" (nicht "start in diesem job, wenn alle upstream-jobs erfolgreich zu sein").
Hier ist eine Visualisierung von was ich spreche. Weiß jemand, ob ein plugin vorhanden ist, das zu tun, was ich mir nach dem?
Edit:
Als ich ursprünglich gepostet diese Frage in 2012, Jason ' s Antwort (die Mitmachen und Gefördert werden, entwickeln plugins) war der beste, und die Lösung, die ich ging mit.
Jedoch dnozay Antwort (Die Build-Flow-plugin) populär gemacht wurde, ein Jahr oder so nach dieser Frage, die eine viel bessere Antwort. Für was es Wert ist, wenn die Leute mich Fragen, diese Frage heute, die ich jetzt empfehlen, dass Sie anstelle.
InformationsquelleAutor der Frage Jay Spang | 2012-01-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es zwei Lösungen, die ich verwendet haben, für dieses Szenario in der Vergangenheit:
Verwenden Sie die Join Plugin auf Ihre "bereitstellen" Beruf und geben Sie "fördern", wie die gezielte job. Würden Sie angeben, "Funktionale Tests" und "Performance-Tests", wie das verknüpfte jobs und starten Sie durch in ein paar Mode -, post-build. Die Parameterized Trigger Plugin ist gut für diese.
Verwenden Sie die Gefördert Builds Plugin auf dem "deploy" - job ist, geben Sie eine Förderung, die funktioniert, wenn die downstream-jobs abgeschlossen sind, und geben Sie Funktionalen und Performance Tests jobs. Als Teil der promotion-Aktion, um das "fördern" - job. Sie haben noch zu Beginn der zwei Prüfaufträge aus den "deploy" -
Es ist ein KRITISCHER Aspekt, um diese beiden Lösungen: Fingerabdrücke müssen korrekt verwendet. Hier ist was ich gefunden habe:
InformationsquelleAutor der Antwort Jason Swager
Pipeline plugin
Können Sie die Pipeline-Plugin (ehemals
workflow-plugin
).Kommt es mit viele Beispiele, und Sie können Folgen Sie diesem tutorial.
z.B.
Bauen-flow-plugin
Können Sie auch die Bauen-Flow-Plugin. Es ist einfach nur genial - aber es ist veraltet (Entwicklung eingefroren).
Einrichten der Arbeitsplätze
Erstellen jobs für:
Einstellung der upstream -
im upstream (hier
build
) erstellen Sie ein einzigartiges Artefakt, z.B.:Archiv der
build.tag
Artefakt.build.tag
Datei und Aufzeichnungen, Fingerabdrücke, werden Sie in der Lage zu verfolgen die Eltern.promotion
job erfolgreich ist.Einrichten der nachgelagerten Arbeitsplätze
PARENT_JOB_NAME
undPARENT_BUILD_NUMBER
Kopieren Sie die Artefakte aus vorgelagerten
build
job mit der Copy Artifact Plugin${PARENT_JOB_NAME}
${PARENT_BUILD_NUMBER}
build.tag
Aufzeichnung der Fingerabdrücke; das ist entscheidend.
Einrichten der nachgelagerten promotion job
Tun das gleiche wie die oben genannten, zu etablieren upstream-downstream-Beziehung.
Es braucht keine build-Schritt. Sie können zum durchführen von zusätzlichen post-build-Aktionen wie "hey QA, it 's your turn".
Erstellen Sie einen build-flow job
Glück.
InformationsquelleAutor der Antwort dnozay
Jenkins kürzlich angekündigt first-class-support für workflow.
InformationsquelleAutor der Antwort Andrew Gray
Den Multijob-plugin funktioniert wunderbar für dieses Szenario. Es kommt auch in praktisch, wenn Sie ein Einzel - "Eltern" - Auftrag, kick-off mehrere "child" - jobs, aber immer noch in der Lage sein, um die Ausführung jedes von den Kindern manuell durch sich selbst. Dies funktioniert durch die Schaffung von "Phasen", die Sie addieren von 1 zu n-jobs. Die bauen nur weiter, wenn die gesamte phase erledigt ist, so dass, wenn eine phase mehrere jobs, die Sie alle absolvieren müssen, bevor der rest ausgeführt werden. Natürlich, es ist konfigurierbar, ob das build weiter, wenn es einen Fehler innerhalb der phase.
InformationsquelleAutor der Antwort tbradt
Antworten von jason & dnozay gut genug sind. Aber für den Fall dass jemand auf der Suche nach einfachen Weg gerade JobFanIn plugin.
InformationsquelleAutor der Antwort Yogesh
Glaube ich, dass die Workflow-Plugin ist nun aufgerufen, die Pipeline-Plugin und ist der (derzeit) bevorzugten Lösung für die ursprüngliche Frage, inspiriert von der Build-Flow-Plugin. Es gibt auch eine Erste-Schritte-Tutorial in GitHub.
InformationsquelleAutor der Antwort geipel