Jenkins for Enterprise

Keine Kommentare

Zusammen mit mehreren Kollegen habe ich in einem Training über die Jenkins Enterprise bei Cloudbees sehr interessante Features kennengelernt, die ich mir in den letzten Jahren bei der Arbeit mit Jenkins schon oft gewünscht habe!

Gegenüber der Community Version enthält diese Variante weitere Plugins, die alle dazu dienen, größere Installationen besser managen zu können, und das System insgesamt etwas schneller und stabiler zu machen: Mit den Enterprise Plugins wird das Arbeiten und Konfigurieren von Jenkins effizienter, also einfacher und schneller! Einige Highlights:

  • Wiederholte Konfigurationsteile können als „Templates“ herausgezogen und zentral gepflegt werden (siehe nächster Abschnitt)
  • Für größere Organisationen existiert ein ausgeklügeltes Rollen- und Berechtigungssystem
  • Für High Availability kann ein Backup-Server beim Ausfall des Masters einspringen, und die abgebrochenen Jobs werden automatisch wieder aufgesetzt!
  • Mit „Validated Merge“ gibt es jetzt eine Art Pre-Commit Build Step. Jenkins fungiert als „Gate“, und lässt das Einchecken von Änderungen nur zu, wenn es einen erfolgreichen Build gab. Damit erhält man immer einen sauberen Stand im Repository!
  • Im Custom Update Center kann eine eingeschränkte Liste an Plugins freigeben werden. Dabei können in bestimmten Versionen festgelegt werden. Damit kann verhindert werden, dass unkontrollierte Plugin-Versionen beim Update zu ungewünschten Nebeneffekten und Fehlern führen. Außerdem kann damit die Liste auf eine übersichtliche Menge reduziert. Das erleichtert das Aufsetzen und starten eines anderen, neuen Jenkins Masters mit genau definierten Plugins.
  • Es gibt viele weitere Verbesserungen. So wird der normale Artifact Archiver durch den Fast Archiver ersetzt, der wie rsync differenziell, also sehr schnell arbeitet.
  • Für Interessierte: man kann eine 60 (!) Tage lauffähige Evaluation Version bei cloudbees.com downloaden.

In diesem Blog stelle ich das Cloudbees Templates Plugin vor, weil es eine sehr effektive Konfiguration ermöglicht, was sehr viel Zeit sparen kann!

Cloudbees Templates Plugin

Häufig werden ähnliche Build Jobs angelegt. Sie unterscheiden sich oft nur in wenigen Details innerhalb der Build Steps. Müssen dabei Build Skripte angepasst werden, so heißt es, dass viele Jobs konfiguriert werden müssen, was aufwendig und fehleranfällig ist.

Es wäre also prima, wenn man alle gleichzeitig mit einer einzelnen Anpassung ändern könnte!

Hier hilft das Templates Plugin, weil es ermöglicht, einen Build Step zu definieren, der an einer zentrallen Stelle für alle Jobs gleichzeitig angepasst werden kann!

Neue Build Steps

Mit wenigen Schritten wird ein Builder Template angelegt. Es können auch Parameter definiert werden!

NewTemplateDeployWebapp

Dieser einfache Beispiel Build Step soll eine Web Applikation unter Windows zu einem Tomcat Server deployen. Wir benötigen dazu nur den Dateipfad zur war Datei

  • Dieser Pfad wird dann ins Windows Format umgewandelt
  • Per xcopy wird diese Datei auf den Test Server kopiert
configure Deploy Webapp Template Dialog

configure Deploy Webapp Template

Hier wird per Groovy Skript eine Variable gesetzt, die dann einfach im Batch Skript verwendet wird. Sehr einfach kann nun der neue Build Step benutzt werden:

Added a Custom "Deploy" Build Step

Added Custom „Deploy“ Build Step

Die Konsolenausgabe sieht dann zum Beispiel so aus
Build Run Konsole

Build Run Konsole

Neue Jobs

Oft gibt es gleichartige Jobs für ähnliche Projekte, die sich im wesentlichen nur durch einige Parameter wie Projektname und Pfad ins Repository unterscheiden. Ein typisches Beispiel sind die Build-Jobs aller Jenkins Plugins. 

Wer solch eine Liste mit zum Beispiel mehr als 30 ähnlichen Jobs anpassen musste, der weis wie aufwendig es ist, und wünscht sich, die Konfiguration nur an einer Stelle pflegen zu können.

Dabei hilft das Cloudbees Template Plugin: Man definiert einen einzigen „Basis Job“ mit Parametern, auf dem dann die gleichartigen Jobs basieren.

Am einfachsten gelingt es in zwei Schritten:

  • Zuerst legt man sich wie üblich einen „Beispiel Job“ (hier: GenericPluginBuildJob) an, den man später natürlich „deaktiviert“, damit er nicht irrtümlich gestartet wird.
  • Dann erzeugt man daraus die Schablone für die anderen Jobs, indem man die gewünschten Parameter einfügt.
Configure Job Template

Configure Job Template – Teil 1

Hier wurde die Konfiguration des ersten Jobs geladen, und so angepasst, dass folgende Parameter eingesetzt werden:

Mit dem Namen wir hier der Github SCM Pfad erzeugt (siehe Hervorhebung)

NewTemplateBuildJenkPlugin-Job

NewTemplateBuildJenkPlugin-Job

Der neue Job wird dann basierend auf diesem Template erzeugt

Create Plugin Build Job

Create Plugin Build Job

und automatisch konfiguriert. Das Ergebnis nach einem Build Lauf

CreatedAndRunJenkinsPluginJob

Der Vorteil ist nun, dass sich Änderungen im Template sofort auf den nächsten gestarteten Build auswirkt!

Das Templates Plugin hilft somit, vor allem viel Zeit bei der Konfiguration einzusparen.

Eine Übersicht und viele weitere interessante Details über alle Enterprise Plugins findet man auf der Cloudbees Website.

Robert Hostlowsky

In den letzten 17 Jahren sammelte Robert Erfahrungen in verschiedenen Rollen in der Softwareentwicklung. Derzeit arbeitet er bei der codecentric AG als Entwickler und technischer Coach für agile Entwicklungspraktiken mit dem Ziel hoher Qualität und Effizienz.
Seit 2012 ist Robert begeisteter Anhänger der Software-Craftsmanship-Bewegung.

Share on FacebookGoogle+Share on LinkedInTweet about this on TwitterShare on RedditDigg thisShare on StumbleUpon

Kommentieren

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