Apperstellung – kontinuierliche Integration mittels Jenkins

In einer Blog-Reihe wollen wir uns verschiedenen Aspekten und Problemstellungen widmen, die beim Erstellen einer mobilen Webapplikation entstehen können. Im ersten Teil beschäftigten wir uns mit der Auslieferung des Backend Service via Jenkins auf einem Testserver, um eine kontinuierliche Integration zu gewährleisten.

Technologien
Beispielhaft sei eine App angedacht, die folgende technologische Bausteine umfasst:

  • Ionic Frontend
  • Java Backend (Spring/Gradle)
  • Anbindung an eine Datenbank (SQL)
  • Anbindung an ein CMS (FirstSpirit)
  • Versionsverwaltung (Git)
  • Tool für die kontinuierliche Integration (Jenkins)

 

Jenkins-Job für einen Spring Boot Service
Nicht zuletzt im Sinne einer kontinuierlichen Integration bietet es sich an, die App via Jenkins auf einem Testserver auszuliefern. Im Folgenden sei dies hier beispielhaft für das Backend vorgestellt. Für den Spring Boot Service, der das Backend unserer App darstellt, wurde ein Jenkins-Job erstellt, der folgende Aufgaben erfüllen soll:

  1. Das automatische Auschecken aus unserem Versionsverwaltungssystem (Git)
  2. Das Bauen durch Jenkins (Gradle)
  3. Das Verschieben der Build-Artefakte auf den Testserver

 

Versionsmanagement und Buildauslöser
Jenkins checkt in unserem Fall die Quelldateien aus unserem dedizierten Git-Repository aus. Dies ist über das Jenkins Git Plugin möglich. Dabei wird der Job automatisch angestoßen, nachdem Jenkins Änderungen an unserem definierten Deployment-Branch registriert hat.
Um das Laden der Quelldateien unter Jenkins durchführen zu können, muss in der Projekt-Konfiguration unter Source-Code-Management das gewünschte Versionsverwaltungssystem ausgewählt und die Daten für den Zugriff auf das Repository eingegeben werden.

 

Jenkins Source-Code-Management mit Git

 

Im Abschnitt Build-Auslöser können die jeweiligen Optionen gesetzt werden, die zeitgesteuerte Builds erlauben.

 

Jenkins Buildauslöser

 

Gradle als Build-Management-Tool
Da wir in unserem Projekt Gradle als Build-Management-Tool benutzen, müssen nur die Gradle-Tasks clean und build aufgerufen werden, um alte Build-Artefakte zu entfernen und den aktuellen Quellcode in eine mittels Java ausführbare .jar-Datei zusammenzupacken. Um Gradle Tasks durch Jenkins ausführen zu lassen, muss im Abschnitt Buildverfahren lediglich im Drop-Down-Menü die Auswahl Invoke Gradle Script aufgerufen werden. Unter Tasks lassen sich dann nacheinander die benötigten Schritte und Aufgaben definieren. Dazu können weitere Shell Befehle ausgeführt werden, beispielsweise um Modifizierungen an der .jar-Datei vorzunehmen.

 

Buildverfahren Gradle-Skript

 

Post-Build Aktionen
Im letzten Schritt werden die Build-Artefakte, in unserem Fall die entstandene .jar-Datei, auf unseren Deployment-Server übertragen. Dies kann beispielsweise über die Post-Build-Aktion Send build artifacts over SSH geschehen, welche im Abschnitt Post-Build-Aktionen zu finden ist. Hierbei ist zu beachten, dass der Server, an den die Build-Artefakte gesendet werden sollen, vorher in der globalen Konfiguration von Jenkins im Abschnitt Publish over SSH hinterlegt sein muss, um ihn als Zielserver angeben zu können. Nachdem ein Zielserver ausgewählt wurde, muss ein neues Transfer-Set angelegt werden. Danach wird spezifiziert, welche Dateien auf den Server verschoben werden (Source Files), welcher Präfix des Ausgangsdateipfades nicht mit auf den Zielserver übernommen werden soll (Remove prefix), in welchen Remote-Ordner auf dem Server gespeichert wird (Remote directory) und welche Aktion nach dem Verschieben der Daten auf dem Server vorgenommen werden soll (Exec command). Alternativ ist es möglich entweder Dateien zu verschieben, ohne nach dem Verschieben eine Aktion durchzuführen oder eine Aktion durchzuführen, ohne vorher Daten auf den Server verschoben zu haben. Dies kann über das Freilassen der entsprechenden Textfelder erreicht werden. Ein Überblick einer möglichen Post-Build-Aktion ist im Folgenden zu sehen.

 

Publish over SSH

 

Die beschriebenen Schritte sollten Sie nun in die Lage versetzen, für einen Service einen Jenkins Job zu erstellen. Wir wünschen erfolgreiches Coden.

 

Folgende Themen möchten wir in zukünftigen Blogeinträgen beleuchten:

  • Erstellung und Konfiguration einer Ionic App
  • Auslieferung einer APK mittels Jenkins
  • Analysieren eines Services mittels SonarQube
  • Anbindung eines CMS (FirstSpirit) an die App zur redaktionellen Verwaltung der Inhalte

Schreibe einen Kommentar

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