Was ist Jenkins?

Jenkins ist ein erweiterbares, webbasiertes Software-System zur kontinuierlichen Integration von Komponenten zu einem Anwendungsprogramm.

Die Aufgaben von Jenkins umfassen:

  • Steuerung von Deployment-Prozessen
  • Logging von Ereignissen (Deployments, Tests)
  • Darstellung von geloggten Ereignissen (Erfolgreiche Deploymentschritte, Abbrüche, Fehlermeldungen)
  • Durchführung automatisierter Tests (z.B. UAT’s)
  • Darstellung von Ergebnissen automatisierter Tests
  • Verwaltung von Benutzern, die zum Auslösen von Deployments berechtigt sind
  • Benachrichtigung z.B. bei fehlschlagenden Tests oder Deployments

Die Steuerung der Deployment-Jobs wird über den folgend beschriebenen Master-Slave Ansatz geregelt.

Eine zentrale Jenkins-Instanz, weiterhin Master genannt, dient dabei der Steuerung für die einzelnen Jobs.
Der Master verteilt Aufgaben an weitere Instanzen, weiterhin Slaves genannt. In diesem Fall hat sich die Verwendung von Docker-Containern als praktikable Lösung herausgestellt und wird so von uns betrieben.
Die Jobs erzeugen ein Artefakt, mit dem Ziel dies anschließend auszuliefern und auf den Zielsystemen zu installieren.