Jenkins mit GitHub-Integration, Pipelines und Multibranch Workflows

in  Builds & Tests , ,

Jenkins mit GitHub-Integration, Pipelines und Multibranch Workflows

Gegenwärtig beschäftige ich mich mit zwei interessanten Punkten in Bezug auf Jenkins. Die neu gestaltete Website bietet dazu einen guten Einstiegspunkt.

Der erste Punkt dreht sich darum, Jenkins besser mit GitHub zu verzahnen.

  • Hier steht insbesondere eine engere Integration des Build Status im Raum. Die Nutzung von Service Hooks erlaubt es, einen Build via Push zu starten, was sowohl schneller als auch effizienter als das zeitbasierte Polling des Git-Repositories seitens Jenkins abläuft.
  • Durch die Commit Status API kann der Erfolg oder Fehler eines Builds zu einem Commit auf GitHub reflektiert werden.
  • Der aktuelle Build-Zustand des Repositories sollte auf GitHub angezeigt werden.
  • Auch Pull Requests sollten ebenso wie der Hauptbranch gebaut werden.

Der zweite Bereich behandelt Pipelines, mit denen sich der Workflow eines Jobs flexibel orchestrieren lässt.

  • Jobs können so prägnant in einer Datei beschrieben werden, die im Repository liegt (Jenkinsfile). Damit wird die Job-Konfiguration mit in der Git-Versionierung und nicht mehr in der Jenkins-UI vorgenommen.
  • Jenkins kann automatisch neue und gelöschte Branches erkennen und erstellt bzw. entfernt die dazugehörigen Jobs automatisch. Dies ist auch der aktuell empfohlene Weg, um Builds für Pull Requests auszuführen.
  • Da die in den Workflows verwendete DSL auf Groovy basiert, ist auch die Implementierung individueller Logik in den Job-Konfigurationen möglich.
  • Aus der Jenkins UI heraus lassen sich Snippets für einzelne Build Steps erzeugen, was die Migration vereinfacht.

Aktuell lese ich mich noch in die Materie ein, werde aber schon bald mit den ersten Schritten für die Umsetzung beginnen.