Jenkins 2.0 ist da!
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.
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
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 |
Eine verbesserte Konfiguration mit Tabs, die beim Scrollen fix sichtbar bleiben, hilft den richtigen Ort für eine Änderung zu finden.
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'])
}
Weiterführende Dokumentation zur Pipeline DSL:
https://jenkins.io/doc/pipeline/
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.
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.