Einführung in Jenkins

Jenkins allgemein

 

Jenkins ist ein CI (continuous integration) Tool, mit dessen Hilfe Anwender in der Lage sind, Software-Projekte automatisiert zu Bauen und die entstandenen Artefakte automatisch auszuliefern (continiuous delivery). Dabei werden den jeweiligen Projekten im Jenkins Jobs zugeordnet, in denen die oben genannten Schritte durchgeführt werden können. Zudem bietet Jenkins die Möglichkeit eine ganze Reihe von Plugins einzubinden, um z. B. die Codequalität der Projekte zu messen.
Seit Version 2.x des Jenkins ist es außerdem möglich, Pipeline-Skripte zu verfassen, in denen sich mehrere Jenkins-Jobs steuern lassen. Auf diesem Weg können Deployments (z. B. auf einen Produktivserver) durch eine Pipeline abgebildet werden. Die Pipeline-Skripte werden in einer groovy DSL (domain specific language) verfasst und lassen sich somit über git-Repositories versionieren (configuration as code).

Das folgende Beispiel behandelt das Erstellen einfacher Jenkins-Jobs für ein Test-Projekt:

Beispielprojekt: Testes

Das vorgestellte Beispiel-Projekt besteht lediglich aus einem git-Repository, dass ein Java-Projekt enthält. Mithilfe des Jenkins soll das Projekt aus dem Repository gezogen, gebaut und auf einen Server verschoben werden. Hierfür wird in den folgenden Schritten ein Jenkins-Job erstellt:

  1. Auf dem Jenkins Hauptbildschirm wird ein neues „Element“ angelegt:
  2. In der folgenden Ansicht müssen der Name des Jenkins-Jobs und die Art bestimmt werden.

    (Ein Free Style-Projekt ist oft ratsam, da es keinen weiteren Restriktionen unterliegt)
  3. Nach dem Anlegen eines Jobs sollte sich sofort die Konfiguration des neuen Jobs öffnen.

    Dort kann unter Source Code Management die Quelle für den Projektcode angegeben werden.
    Dabei ist $GIT_REPO durch die Webadresse des Projekt-git-Repositories zu ersetzen und $branch durch den Branch, der im git-Repository ausgecheckt werden soll.
  4. Das vorgestellte Beispielprojekt nutzt gradle zum Bauen des Artefakts, sodass im Abschnitt „Buildverfahren“ folgender Build-Schritt eingebaut werden muss:

    Dieser Build-Schritt führt das Tatsächliche Bauen mithilfe von gradle durch, wobei unter Tasks die auszuführenden gradle-Tasks (hier: Arbeitsbereich aufräumen + Artefakt bauen) aufgeführt werden.
  5. Zu guter Letzt soll das fertig gebaute Projekt auf einen Server an eine entsprechende Stelle ausgeliefert werden:

    Es ist möglich über die Post-Build-Aktion „Send build artifacts over SSH“ das vorher gebaute Artefakt an einen beliebigen Server zu schicken.
    Hier ist der Zugriff auf den Server testdev in der globalen Jenkins-Konfiguration zu konfigurieren. Unter „Source files“ wird der Pfad (relativ zur Arbeitsmappe) zum gebauten Artefakt angegeben.
    „Remote directory“ gibt den Ordner an, in dem das Artefakt auf dem Server hinterlegt werden soll. Zusätzlich ist es möglich über „Exec command“ einen shell-Befehl auf dem Server auszuführen.
    Dieser wird nach dem Verschieben der Daten ausgeführt. Durch diesen Schritt lassen sich also sowohl Daten übertragen als auch die ausgelieferten Artefakte direkt starten (hier über restart_server.sh).

Nachdem dieser Ablauf durchgespielt wurde, ist auf dem Jenkins-Server ein Job mit dem Namen „Testes-Job“ erstellt, der Quelldaten aus einem git-Repository lädt, diese baut und auf einen Server ausliefert.
Jenkins bietet natürlich viele weitere Möglichkeiten der Gestaltung (z. B. durch die bereits angesprochenen Pipeline-Skripts). Hierfür sei auf den Abschnitt Nützliche Links verwiesen.

Nützliche Links:

 

Schreibe einen Kommentar

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