Wiederverwendung Jenkinsfile in verschiedenen Projekten

Das Szenario:

Haben wir eine Reihe von Projekten, die liegen in einem eigenen git-repository. Ich möchte Sie zu bauen mit Jenkins 2 Zweigstellen der pipeline jobs. Ein job für jeden-repository. Die Jenkinsfile für jedes Projekt gleich aussieht, und änderungen an den build-Prozess benötigen, um ausgerollt werden zu jedem Projekt. Diese änderungen können auch kleine Korrekturen in einen build-Schritt hinzufügen oder einen komplett neuen build-Schritt.

Die Idee:

Halten maintainabillity so hoch wie möglich, würde ich gerne verwenden, nur eine Jenkinsfile und fügen Sie es in jedem Projekt, so dass ich mich nur ändern müssen, um diese einzelne Jenkinsfile zu ändern, alle Projekte bauen workflow.

Die Frage

Ist es möglich (und wie) dieses Ziel zu erreichen. Bereitstellen einer einzigen Jenkinsfile, um eine Reihe von repository, so dass ich nur eine Datei zu ändern, um zu ändern, alle build-jobs?

zusätzliche

Ich weiß, dass es die Möglichkeit gibt, zu verwenden shared libraries, wo ich konnte, definieren Sie die Ausführung von code von der build-Schritte. Aber wenn Sie wollen, fügen Sie einen komplett neuen build-Schritt, die ich noch hätte ändern müssen, um alle jenkinsfiles, die ich nicht tun möchte. Also ich bin wirklich auf der Suche nach einem Weg, um die ganze Jenkinsfile für alle Projekte, wenn möglich.

Versucht, so weit

  1. Dachte ich, das BRANDNEUE feature in der Lage sein zu sagen, Jenkins, wo die jenkinsfile befindet, und verwenden Sie ein Submodul zu umfassen, es in jedem Projekt. Aber das scheint nicht zu funktionieren, da Jenkins sieht für die Jenkinsfile auf dem git-Server, wo Sie nie auftauchen, da es ein Submodul…
InformationsquelleAutor pyriand3r | 2017-06-19



2 Replies
  1. 2

    Ist es nicht nur möglich, pipeline-Schritte in eine gemeinsame Bibliothek. Es ist auch möglich, Ihre komplette pipeline als Globale variable in einer shared library. Mit diesem Ansatz Ihre Jenkinsfile in jedem repository, benötigt nur eine Zeile code dann. Und Sie können ändern Sie die pipeline aller Projekte an einem einzigen Ort (in der gemeinsam genutzten Bibliothek).

    Siehe mein Beispiel in: Jenkins-pipeline-Vorlage

    Gibt es auch einen kleinen Abschnitt in den Jenkins-Dokumentation zu diesem Thema: https://jenkins.io/doc/book/pipeline/shared-libraries/#defining-a-more-structured-dsl

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.