28. Mai 2016 | 4 min lesezeit

Jenkins 2.0 – Von CI nach CD mit Pipelines

Schon letztes Jahr angekündigt, hat unser CI-Butler Jenkins mit leichter Verzögerung — aber fast pünktlich zum 10-jährigen Jubiläum — seinen ersten großen Versionssprung auf die Version 2.0 erfahren. Das war für uns Grund genug, dieses alltägliche Tool im neuen Gewand genauer anzuschauen.

Um es vorweg zu nehmen: Es hat keine Revolution stattgefunden, aber das Pipeline Konzept ist überzeugend!

Im Kern findet man drei große Bereiche, in denen sich wesentliche Änderungen ergeben haben.
Zunächst ist der augenscheinlichste (auch weil am meisten beworbene) Baustein das Pipeline Konzept. Damit positioniert sich Jenkins auch deutlich als Continuous Delivery und gar Continuous Deployment Tool und zeigt, dass reines Continuous Integration in den agilen Projekten heutzutage schon lange nicht mehr ausreicht.

Den zweiten augenscheinlichen Aspekt würden wir mit „Best Practice Sammlungen“ betiteln, in dem es darum geht, dass das Jenkins-Team versucht hat, für bestimmte Use Cases eine ‚Best-Of‘ Sammlung an Plugins zusammenzustellen, welche direkt mitgeliefert werden.

Und schließlich hat sich auch in der UI eine Menge getan.

UI Verbesserungen

Positiv zu bemerken ist, dass die Änderungen die Oberfläche nicht komplett anders aufbauen, sondern dynamische Elemente und Kategorien hinzufügen und bei bestehenden Elementen im Wesentlichen auf eine klarere Formensprache und eine flüssigere und auf einen Blick erfassbare UI gesetzt wurde. Schon allein aus Gründen der Abwärtskompatibilität für die bisherigen Plugins ist dies auch notwendig.

Am auffälligsten sind die Änderungen im Bereich der Jobverwaltung.

Auf dem Bild ist die neue Oberfläche für das Job anlegen zu sehen:

Jenkins New Job

Auch die Seite zum Job editieren wartet mit deutlichen Änderungen auf. Im oberen Bereich sind die verschiedenen Konfigurationskategorien zu sehen, mit denen zu den entsprechenden Abschnitten unten hingesprungen werden kann:

Jenkins Job Configuration

Zwar ist man heute bzgl. moderner Webanwendungen oft deutlich mehr an Komfort und Eleganz gewohnt. Insgesamt jedoch gefällt uns diese behutsame Anpassung der Oberfläche sehr. Umso mehr, wenn man in Betracht zieht, dass dadurch die Abwärtskompatibilität gewahrt bleiben konnte.

Best Practice Konzept für Jenkins 2

Es werden mit Jenkins 2 einige Plugins von Haus aus als unterschiedliche Bundles mitgeliefert. Der bisherige Zoo an Plugins hat sicherlich den ein oder anderen Einsteiger bisher überfordert (vgl. The paradox of choice).
Daher wird ab sofort je nach Auswahl ein bestimmtes Set an bewährten Plugins vorinstalliert. Der erfahrene Nutzer kann dies trotzdem noch immer seinen Wünschen entsprechend anpassen.

Pipeline as code

Wie auf den vorherigen Bildern zu sehen war, gibt es neue Jobtypen wie Pipeline und Multibranch Pipeline.
Um besser auf die Anforderungen der heutigen Softwareentwicklung einzugehen, wurde bereits in 2015 das Build Flow Plugin entwickelt. Es ermöglichte schon mit einer Domain Specific Language (DSL) eine Pipeline zu beschreiben.

Dieses Plugin diente daraufhin als Inspiration für das Pipeline Plugin, welches durch das Jenkins Team entwickelt worden ist. Es greift die Grundkonzepte des Build Flow Plugins auf und erweitert diese um Funktionalitäten wie das Pausieren/Fortführen von Jobs und das Speichern der Pipelinebeschreibung in einem Versionkontrollsystem. Ganz nach dem Motto Pipeline as Code.
Jenkins Job Configuration Pipeline

Das beispielhafte Pipelineskript sieht dann wie folgt aus:

Für IntelliJ IDEA existiert eine Groovy-DSL Unterstützung (gDSL), s.d. in dieser IDE das Schreiben und Überprüfen des Pipelineskripts gewohnt komfortabel unterstützt wird (Autocompletion, Syntax Highlighting, …). Andere IDEs werden sicherlich alsbald folgen.

Sonstiges

Nicht vergessen werden sollten auch noch zwei kleinere Punkte:

  • Toolverwaltung in den Einstellungen
    Einige Einstellungen wie die Git, Ant, Maven und JDK Installationen sind in eine eigene Kategorie unter Jenkins verwalten ausgelagert worden. Dort sind auch Installationen zu Plugins wie SonarQube zu finden. Die Einstellungen bezüglich der Instanzen sind weiterhin unter System konfigurieren gelistet.
  • Abwärtskompatibilität
    Durch eine stabil gebliebene Plugin API können alle Plugins vor Jenkins 2.0 weiter genutzt werden und somit sind im Prinzip alle Jobs mit der neuen Version kompatibel. Ein direkter Umstieg von Jenkins 1 auf 2.0 soll laut Jenkins Community möglich sein. Bei einfachen Beispielen können wir das vorerst bestätigen.Die Idee der Long Term Support (LTS) Linie bleibt weiter bestehen. Diese wird bei Jenkins in der Art umgesetzt, dass alle ca. 12 Wochen ein Release als LTS deklariert wird. Demzufolge ist mit ca. Juli 2016 als Releasedatum für das erste LTS Release in der 2.0 Version zu rechnen.

Frühestens zu dieser Zeit und sobald die Priorisierung des Backlogtickets es zulässt, werden wir in dem ein oder anderen unserer Projekte eine entsprechende Migration durchführen. Ab dann werden wir auch Real Life Erfahrungsberichte für komplexe Maven Enterprise Projekte für Euch aufbereiten.

Bleibt gespannt!


Keine Kommentare

Kontakt

OPEN KNOWLEDGE GmbH

Standort Oldenburg:
Poststraße 1, 26122 Oldenburg

Standort Essen:
II. Hagen 7, 45127 Essen