Montag, 25. April 2016

Jenkins 2.0 ist da!

Am 20. April ist die neue Version des Continuous Integration Tools erschienen.
Folgend die besten Neuerungen im Überblick:

  • Neue Website
  • Neuer Installer
  • Verbesserte Job-Konfiguration
  • Pipelines as Code

Neue Website

Jenkins ist neu unter der URL https://jenkins.io/ erreichbar.
Die Bootstrap-basierte Website wirkt ansprechend.

Neue Website

Auf der Website sind Packages verfügbar für FreeBSD, Gentoo, Mac OS X, Open BSD, openSUSE, RedHat/Fedora/CentOS, Ubuntu/Debian und Windows.

Natürlich lässt sich ein Jenkins-Master auch als Docker-Image betreiben.
Für Version 2.0 ist momentan erst 2.0-beta-2 verfügbar auf Docker-Hub.
Neben dem featured Docker-Repository für Jenkins-Master existiert noch ein zweites Repository namens jenkinsci mit verschiedene Slave-Varianten.


Neuer Installer

Beim ersten Kontakt mit der neuen Version des Butlers fällt einem das neue Erscheinungsbild des Installers auf. Man kann eine Variante mit empfohlenen Plugins wählen oder wie bisher frei wählen welche Erweiterungen installiert werden sollen.



Die Liste der empfohlenen Plugins besteht aus:

  • Folders
  • OWASP Markup Formatter
  • Build Timeout
  • Credentials Binding
  • Timestamper
  • Workspace Cleanup
  • Ant
  • Gradle
  • Pipeline
  • Github Organization Folder
  • Pipeline: Stage View
  • Git
  • Subversion
  • SSH Slaves
  • Matrix Authorization
  • PAM Authentication
  • LDAP
  • Email Extension
  • Mailer
In dieser Liste ist höchstens "Github Organization Folder" etwas unerwartet. Sonst scheint es eine sinnvolle durchschnittliche Grundausstattung zu sein.

Die Installation dieser Plugins ist parallelisiert und läuft schnell durch.



Danach wird man von der altbekannten Job-Übersicht begrüsst.
Im Vergleich zum Installer hat diese Darstellung einen anderen Stil und wirkt etwas älter.

Job-Übersicht


Verbesserte Job-Konfiguration

Ein verschönerter Wizard vereinfacht die Wahl eines Templates für neue Jobs.
Job-Wizard
Die Konfiguration des Jobs kann bei vielen installierten Plugins ziemlich lange sein.
Eine verbesserte Konfiguration mit Tabs, die beim Scrollen fix sichtbar bleiben, hilft den richtigen Ort für eine Änderung zu finden.

Job-Konfiguration

Pipelines as Code

Neu kann in einer Datei namens Jenkinsfile im Projekt-Repository eine ganze Pipeline in einer Groovy-basierten DSL definiert werden.
Dies bietet eine Reihe von Vorteilen für komplexe Projekte. So steht endlich auch die Konfiguration von Jenkins unter Versionskontrolle. Diese deklarative Konfiguration kann dann mit Tools wie Gerrit durch ein Review überprüft werden.
Verschiedene Branches können so auch abweichende Konfigurationen haben.
Es ist auch eine grosse Verbesserung in Sachen wiederholbare Builds.

Ein minimales Beispiel einer einfachen Pipeline sieht so aus:
node {
    stage 'build'
    sh './gradlew assemble'
    
    stage 'test'
    sh './gradlew check'
    step([$class: 'ArtifactArchiver', artifacts: '**/target/*.jar', fingerprint: true])

    step([$class: 'JUnitResultArchiver', testResults: '**/target/surefire-reports/TEST-*.xml'])
}


Konfiguration der Pipeline im GUI


Weiterführende Dokumentation zur Pipeline DSL:
https://jenkins.io/doc/pipeline/

Pipeline Stage View

Eine neue Ansicht verbessert die Übersicht einer Pipeline. So sieht man auf einen Blick welche Phasen lange dauern.

Pipeline Übersicht

Pipeline im Betrieb

Fazit

Vor allem die Neuerung "Pipelines as Code" klingt nach einem vielversprechenden Konzept.
Dadurch dass Jenkins 2.0 vollständig kompatibel zu 1.x Konfigurationen und Plugins sein soll, ist die Hürde für das Upgrade entsprechend gering.