© Excellent backgrounds/Shutterstock.com
Java Magazin
Das Pipeline-Plug-in von Jenkins

So baue ich eine Build-Pipeline

Aktuelle Trends wie Agile Entwicklung mit ihren kurzen Iterationen und Microservices wecken den Bedarf, die Softwarebereitstellung zu automatisieren. Dadurch wird Continuous Delivery [1] zum Wettbewerbsvorteil. Doch wie baue ich eigentlich eine Build-Pipeline? Dazu bietet der Build-Server Jenkins mit seinem „Pipeline as Code“-Ansatz solide Bausteine.

Tobias Getrost


Jenkins ist mittlerweile ein alter Hase auf dem Markt der Build-/Continuous-Integration-Server. Mit dem Pipeline-Plug-in [2] bietet es solide Bausteine für eine eigene Build-Pipeline. Die Pipeline wird dabei in einer Groovy Domain-Specific Language (DSL) formuliert. Dies bietet die Flexibilität einer Programmiersprache gepaart mit sinnvollen Abstraktionen. Darüber hinaus bietet sich die Möglichkeit, die Pipeline genauso wie den Programmcode zu versionieren. Ein weiterer Vorteil ist, dass die Ausführung der Pipeline nach einem Absturz des Build-Servers an genau dieser Stelle wieder aufgenommen wird.

Abb. 1: Eine typische Build-Pipeline besteht aus fünf Stufen

Im Rahmen dieses Artikels erstellen wir eine Build-Pipeline, wie sie in Abbildung 1 zu sehen ist. Als Software kommt die kitchensink-Anwendung aus den WildFly Quickstarts zum Einsatz [3]. Unsere Pipeline besteht aus den folgenden Stages:

Commit Stage: Check-out der Software aus der Versionsverwaltung und Build des Webarchivs mit Maven.Automatische Akzeptanzteststage: In dieser Stage unserer Pipeline wird das zuvor gebaute Webarchiv mit Arquillian auf einen WildFly-Server deployt und die automatischen Integrationstests ausgeführt.User-Experience-(UX-)Tests und Securitytests: Nachdem unsere Software erfolgreich gebaut wurde und die Akzeptanztests grün sind, folgen parallel manuelle UX- und Securitytests. Diese werden auf unterschiedlichen Testsystemen und durch unterschiedliche Personen durchgeführt.Release-Stage: Im letzten Schritt wird unsere Software für die produktive Verwendung bereitgestellt.

Der Anfang: Hello-World-Pipeline

Zunächst beginnen wir mit einer einfachen Hello-World-Pipeline zum Warmwerden. Dazu legen wir in Jenkins einen neuen Job vom Typ Pipeline an und geben diesem einen Namen. Für unsere erste Hello-World-Pipeline geben wir den Code (Listing 1) direkt im Abschnitt Pipeline unserer Konfiguration ein:

stage 'Commit Stage'node { echo "Hallo ${env.USERNAME}"}

Unsere Hello-World-Pipeline definiert zunächst eine Stage und gibt dieser einen Namen. In der nächsten Zeile beginnen wir mit node einen Block, der auf einem Jenkins-Build-Slave ausgeführt wird. Die Auswahl der Build Slaves lässt sich durch Tags einschränken. Der Befehl echo schließlich gibt einen Begrüßungstext auf der Konsole aus. Dazu verwendet er eine Umgebungsvariable, um den Nutzernamen zu ermitteln. Umgebungsvariablen und Build Properties lassen sich innerhalb der Pipeline über Platzhalter in Strings einfügen. Dabei bekommen U...

Java Magazin
Das Pipeline-Plug-in von Jenkins

So baue ich eine Build-Pipeline

Aktuelle Trends wie Agile Entwicklung mit ihren kurzen Iterationen und Microservices wecken den Bedarf, die Softwarebereitstellung zu automatisieren. Dadurch wird Continuous Delivery [1] zum Wettbewerbsvorteil. Doch wie baue ich eigentlich eine Build-Pipeline? Dazu bietet der Build-Server Jenkins mit seinem „Pipeline as Code“-Ansatz solide Bausteine.

Tobias Getrost


Jenkins ist mittlerweile ein alter Hase auf dem Markt der Build-/Continuous-Integration-Server. Mit dem Pipeline-Plug-in [2] bietet es solide Bausteine für eine eigene Build-Pipeline. Die Pipeline wird dabei in einer Groovy Domain-Specific Language (DSL) formuliert. Dies bietet die Flexibilität einer Programmiersprache gepaart mit sinnvollen Abstraktionen. Darüber hinaus bietet sich die Möglichkeit, die Pipeline genauso wie den Programmcode zu versionieren. Ein weiterer Vorteil ist, dass die Ausführung der Pipeline nach einem Absturz des Build-Servers an genau dieser Stelle wieder aufgenommen wird.

Abb. 1: Eine typische Build-Pipeline besteht aus fünf Stufen

Im Rahmen dieses Artikels erstellen wir eine Build-Pipeline, wie sie in Abbildung 1 zu sehen ist. Als Software kommt die kitchensink-Anwendung aus den WildFly Quickstarts zum Einsatz [3]. Unsere Pipeline besteht aus den folgenden Stages:

Commit Stage: Check-out der Software aus der Versionsverwaltung und Build des Webarchivs mit Maven.Automatische Akzeptanzteststage: In dieser Stage unserer Pipeline wird das zuvor gebaute Webarchiv mit Arquillian auf einen WildFly-Server deployt und die automatischen Integrationstests ausgeführt.User-Experience-(UX-)Tests und Securitytests: Nachdem unsere Software erfolgreich gebaut wurde und die Akzeptanztests grün sind, folgen parallel manuelle UX- und Securitytests. Diese werden auf unterschiedlichen Testsystemen und durch unterschiedliche Personen durchgeführt.Release-Stage: Im letzten Schritt wird unsere Software für die produktive Verwendung bereitgestellt.

Der Anfang: Hello-World-Pipeline

Zunächst beginnen wir mit einer einfachen Hello-World-Pipeline zum Warmwerden. Dazu legen wir in Jenkins einen neuen Job vom Typ Pipeline an und geben diesem einen Namen. Für unsere erste Hello-World-Pipeline geben wir den Code (Listing 1) direkt im Abschnitt Pipeline unserer Konfiguration ein:

stage 'Commit Stage'node { echo "Hallo ${env.USERNAME}"}

Unsere Hello-World-Pipeline definiert zunächst eine Stage und gibt dieser einen Namen. In der nächsten Zeile beginnen wir mit node einen Block, der auf einem Jenkins-Build-Slave ausgeführt wird. Die Auswahl der Build Slaves lässt sich durch Tags einschränken. Der Befehl echo schließlich gibt einen Begrüßungstext auf der Konsole aus. Dazu verwendet er eine Umgebungsvariable, um den Nutzernamen zu ermitteln. Umgebungsvariablen und Build Properties lassen sich innerhalb der Pipeline über Platzhalter in Strings einfügen. Dabei bekommen U...

Neugierig geworden?


   
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang