Jenkins: Tutorial für das CI-Tool

Wenn Sie in Ihrem Team die agile Methode Continuous Integration (CI) einsetzen möchten, sollten Sie ein einfaches, aber kraftvolles CI-Tool einsetzen. Mit Jenkins haben Sie ein solches zur Hand: Die Open-Source-Software bietet Ihnen vor allem durch Plug-ins enorm viele Möglichkeiten, wie Sie den Continuous-Integration-Prozess effizienter gestalten können.

Jenkins basiert auf Java und läuft deshalb auf jeder denkbaren Plattform. Da die Software zusammen mit Winston ausgeliefert wird, einer Servlet-Middleware, bedarf es keines weiteren Servers, wie etwa Tomcat. Damit auch Sie erfolgreich mit Jenkins arbeiten können, erklären wir Ihnen zuerst, wie Sie das Programm installieren und richtig einstellen. Anschließend zeigen wir Ihnen an einem Beispiel, wie Sie die ersten Schritte in einem Projekt machen.

Installation der Software

Jenkins steht in vielen verschiedenen Versionen zur Verfügung: Zum einen können Sie sich für eine Weekly-Version entscheiden – hierbei bringt Jenkins jede Woche ein Update heraus. Zum anderen gibt es den Long-Term-Support (LTS) – alle drei Monate wird eine stabile Fassung veröffentlicht. Unter diesen beiden Zweigen haben Sie wiederum die Auswahl zwischen verschiedenen Releases: Neben Installationspaketen für die üblichen Betriebssysteme (Windows, macOS, Ubuntu/Debian) stehen auch eine Version für Docker sowie ein Webarchiv (.war) bereit.

Hinweis

In unserem Beispiel verwenden wir den Windows-Installer in der Version 2.121.1 (LTS) unter Windows 7. Sollten Sie eine andere Fassung oder ein anderes Betriebssystem verwenden, kann sich der Setup-Vorgang anders gestalten. Da Jenkins auf Java basiert, müssen Sie eine aktuelle Version der Java-Technologie installiert haben.

Der Windows-Installer führt Sie auf einfache Weise durch die Installation. Sie müssen nur das gewünschte Installationsverzeichnis angeben und die Installation starten.

Setup von Jenkins

Die Installation dürfte nur wenige Sekunden dauern. Direkt im Anschluss öffnet das Programm Ihren Standard-Browser und ruft localhost:8080 auf. Dort befindet sich das Webinterface, mit dem Sie Jenkins bedienen können. Zunächst müssen Sie aber einen Sicherheitsschritt erledigen: Jenkins hat ein zufälliges Passwort für Sie generiert. Dieses finden Sie im Jenkins-Verzeichnis, dort im sogenannten Secrets-Ordner und schließlich in der initialAdminPassword-Datei. Die Datei lässt sich mit einem beliebigen Texteditor öffnen. Kopieren Sie die Zeichenfolge und fügen Sie diese in das Feld im Webinterface ein.

Nun geht es an die Einrichtung von Jenkins. Der Setup-Assistent fragt Sie, ob Sie selbst wählen möchten, welche Plug-ins Jenkins installieren soll, oder ob Sie lieber eine Standardeinstellung verwenden wollen, die alle wichtigen Erweiterungen bereits integriert hat. Wenn Sie sich zum ersten Mal mit Jenkins auseinandersetzen, reicht Ihnen diese Auswahl sicherlich. Und keine Sorge: Weitere Plug-ins lassen sich problemlos nachinstallieren.

Anschließend legen Sie einen ersten Nutzer an. Sollten Sie zunächst allein an Ihrem Projekt arbeiten, können Sie diesen Schritt überspringen und Jenkins einfach als Admin nutzen – in den Einstellungen von Jenkins lassen sich später immer noch neue User mit unterschiedlichen Rechten anlegen. Im finalen Setup-Schritt haben Sie noch die Möglichkeit, eine Jenkins-URL anzugeben. Das entsprechende Feld hat bereits localhost:8080 eingetragen. Wenn Sie Jenkins auf einem Server installiert haben (was in einem professionellen Arbeitsumfeld der Fall sein sollte), geben Sie an dieser Stelle den korrekten Pfad zum Jenkins-Verzeichnis an. Speichern Sie Ihre Eingabe und schließen Sie damit das Setup ab.

Tipp

Weitere Einstellungen können Sie auch nachträglich im Konfigurationsmenü von Jenkins vornehmen.

Jenkins – Einführung in die Arbeitsweise

Sie starten Jenkins mit einer komplett leeren Arbeitsumgebung. Um ein neues CI-Projekt zu starten, müssen Sie einen neuen Job erstellen. Dies geht über den prominenten Hinweis in der Mitte des Fensters („create new jobs“) oder über den Menüpunkt „New Item“, den Sie auf der linken Seite finden.

Im nächsten Schritt geben Sie Ihrem Auftrag einen Namen und wählen aus, was Sie erreichen möchten:

  • Freestyle project: Jenkins verbindet eine Versionsverwaltung mit einem Build-System.
  • Pipeline: Hiermit erstellen Sie eine Pipeline über mehrere Build-Agents hinweg.
  • Multi-configuration project: Wenn Sie ein Projekt haben, das verschiedenster Einstellungsmöglichkeiten bedarf, weil Sie z. B. unterschiedlichste Testumgebungen verwenden, wählen Sie diese Option.
  • Folder: Ein Ordner ist ein Container, in dem Sie verschachtelte Objekte speichern können.
  • GitHub Organization: Diese Option durchsucht alle Repositorys eines Accounts auf GitHub.
  • Multibranch Pipeline: Hiermit erzeugen Sie direkt mehrere Pipelines.

Das Hauptaugenmerk legt Jenkins auf die Freestyle-Projekte, weshalb wir in unserem Beispiel auch ein solches erzeugen werden.

Auf der nun folgenden Seite haben Sie zahlreiche Einstellungsmöglichkeiten. In sechs Kategorien konfigurieren Sie Ihr Projekt. Nehmen wir an, Sie schreiben ein Programm in Java und möchten Continuous Integration verwenden. Als erstes befassen wir uns mit dem Source Code Management. Das Beispielprogramm befindet sich in einem Git-Repository auf Ihrem Rechner (es ist auch möglich, Jenkins beispielsweise mit GitHub zu verbinden). Geben Sie deshalb unter dem Punkt „Git“ das korrekte Verzeichnis an. Sie können auch mit einer Subversion arbeiten.

Im nächsten Schritt wählen Sie den Build Trigger aus. Damit legen Sie fest, in welchen Situationen Jenkins einen Build starten soll. Möglich ist dies z. B. durch ein spezielles Script eines anderen Programms, nachdem ein anderer Build abgeschlossen wurde, oder regelmäßig in bestimmten Zeitintervallen. Sie können einen Build aber auch manuell auslösen, wenn Sie so weit sind – was wir auch in unserem Beispiel machen werden.

Das Build Enviroment, das Jenkins Sie als nächstes konfigurieren lässt, enthält weitere Optionen rund um Builds: Soll z. B. abgebrochen werden, wenn der Prozess hängen bleibt? Oder möchten Sie einen Timestamp in der Konsole ausgeben lassen? Keine der Optionen ist obligatorisch.

Schließlich geht es direkt um den Build: Hier legen Sie fest, womit Ihr Programm gebaut werden soll. Da Sie in der Standardauswahl an Plug-ins bereits Verbindungen zu Ant und Gradle integriert haben, können Sie eines dieser Programme wählen. Möglich ist allerdings auch, auf einfache Kommandozeilenbefehle zurückzugreifen. Wählen Sie die Option für Batch-Befehle und lassen Sie so Ihr Programm kompilieren:

javac MyProgram.java
java MyProgram

Im Anschluss gibt Ihnen Jenkins noch die Möglichkeit, Aktionen nach dem Build auszuführen. Hier ist vor allem Testing ein wichtiger Faktor: Verbinden Sie mit der Option „Publish JUnit test result report“ Jenkins und JUnit miteinander, um Ergebnisse des Test-Frameworks für Java einzubinden. Übrigens: Mit zusätzlichen Plug-ins verbinden Sie Jenkins auch mit anderen Testumgebungen. So lassen Sie über Jenkins sogar automatische Tests ausführen. Zudem können Sie sich und andere per E-Mail über den Status des Builds informieren lassen. Schließlich speichern Sie die Angaben und haben nun Ihren ersten Job erstellt.

Tipp

Wenn Sie Plug-ins installieren möchten, muss der Jenkins-Server neugestartet werden. Dies erreichen Sie, indem Sie sich ausloggen und dann der URL in der Adresszeile des Browsers safeRestart anfügen (z. B. localhost:8080/safeRestart). Wenn Sie sich nun erneut einloggen, können Sie bestätigen, dass Sie neustarten möchten.

Jedes Projekt hat eine eigene Unterseite in Jenkins. Hier können Sie einen Build auslösen, die Einstellungen noch einmal verändern und den Status erkennen. Auf der „Status“-Seite zeigt Ihnen Jenkins auch die Build History. War der letzte Build erfolgreich oder nicht? Mit blauen Punkten markiert Jenkins einen Erfolg, rot stellt einen Fehler dar, der laut Continuous Integration sofort behoben werden muss. An dieser Stelle sehen Sie auch, wenn ein Build gerade erstellt wird. Mit einem Klick auf die Build-Nummer kommen Sie zu einer Detailseite, auf der Sie sich auch den Output der Konsole anzeigen lassen können.

Im Dashboard von Jenkins sehen Sie alle Projekte, an denen Sie arbeiten. Auch hier markiert das Programm farblich den Zustand des Projekts. Außerdem erhalten Sie in Form eines Wetterberichts Informationen über die Build Stability. Dabei handelt es sich um eine Statistik, wie stabil die Builds des Projekts im Durchschnitt sind. Wenn über 80 Prozent Ihrer Builds erfolgreich sind, werden Sie eine Sonne sehen. Unterhalb dieses Werts wird das symbolische Wetter immer schlechter.

Hinweis

Jenkins gibt Ihnen noch viele weitere Möglichkeiten, das Programm an Ihre Arbeitsbedingungen anzupassen und so Ihren Continuous-Integration-Prozess zu vereinfachen. Besonders in den zahlreichen Plug-ins werden Sie für die meisten Situationen eine passende Lösung finden.