Was sind Build Pipelines?

Build Pipelines – was steckt hinter dem Begriff?

Die Grundlage in der Softwareentwicklung ist eine geordnete Planung. Diese soll alle Phasen vom Entwurf bis zum produktiven Einsatz abdecken. Das Ziel ist es, Prozesse zu optimieren, Fehler zu vermeiden und ordentliche Strukturen zu schaffen. Mithilfe von Build Pipelines ist es möglich, diese Ziele zu erreichen. Diese System basiert auf Scripts und speziellen Build Servern. Es hilft unter anderem dabei, die kontinuierliche Integration und das automatische Deployment in der Software Entwicklung umzusetzen.

Das Konzept Build Pipeline als Gerüst für die Planung

Im Prinzip geht es bei den Build Pipelines darum, die verschiedenen Phasen in der Softwareentwicklung klar zu benennen und voneinander zu trennen sowie den gesamten Prozess oder Teile davon zu automatisieren. Es kommt hierbei ein Script zum Einsatz, das alle benötigten Phasen der Entwicklung getrennt auflistet. Ein Beispiel eines solchen Build-Scripts ist ein Jenkinsfile. Welche Art von Script zum Einsatz kommt, ist abhängig vom verwendeten Build Server. Jenkins legt den Fokus auf die kontinuierliche Integration, bei GitLab stehen die kontinuierliche Versionsverwaltung sowie das Bug-Tracking im Mittelpunkt.

Steps – die einzelnen Phasen in den Build Scripts

In den Scripts werden alle Phasen sowie die dazugehörigen Aufgaben definiert. Die einzelnen Phasen werden auch als Steps bezeichnet. Wie viele verschiedene Steps es gibt, hängt auch von der jeweiligen Software ab, die entwickelt wird. Die einzelnen Steps werden grundsätzlich nacheinander und in einer vorgegebenen Reihenfolge abgearbeitet. Man spricht in diesem Fall auch vom Wasserfallmodell. Gleichzeitig ermöglichen Build Pipelines auch die parallele Bearbeitung von Steps. Die Idee dahinter ist, ein Produkt erst in die nächste Phase, also den nächsten Step, weiterzugeben, wenn der vorherige Step abgeschlossen ist. Dies soll verhindern, dass spätere Veränderungen die nachfolgenden Prozesse beeinflussen. Besonders in der Entwicklung von Software führt eine chaotische Herangehensweise oft zu deutlichen Verzögerungen, sodass Termine nicht mehr eingehalten werden können. Gleichzeitig steigen die Kosten sowie der Aufwand für die Entwicklung. Nicht zu unterschätzen ist auch die Gefahr, dass sich Bugs einschleichen, die dann wiederum mühsam gesucht werden müssen.

Die unterschiedlichen Stufen einer Build Pipeline

Das Grundmuster bei den Build Pipelines ähnelt sich immer. Es sind im Wesentlichen die folgenden drei Stufen, die jeweils einzelne Steps in jeder Build Pipeline bilden:

  • Build

  • Test

  • Integration

Bei Bedarf lassen sich weitere Steps hinzufügen. Es ist beispielsweise möglich, die Testphase zu unterteilen. So lassen sich Modul- und Datenbanktests zunächst in einem eigenen Step unterbringen, während Browser-Tests einen zweiten Step bilden. Dies ist beispielsweise bei der Entwicklung auf Basis von Java sinnvoll, da Browser-Tests ohne erfolgreiche Kontrolle des eigentlichen Codes keinen Sinn ergeben. Zum Grundprinzip der Build Pipelines gehört ebenfalls, dass der nächste Step nicht gestartet wird, bevor der vorherige erfolgreich abgeschlossen wurde.

Mit dem Build, also der Kompilierung, beginnt die Build Pipeline. Die Software wird in den benötigten Versionen für alle vorgesehenen Betriebssysteme kompiliert. Sobald dies erfolgreich abgeschlossen ist, folgt der nächste Step, nämlich die Testphase. Hier werden zum Beispiel die Kompatibilität und Performance getestet sowie Bugs gesucht. Auch der eigentliche Quellcode wird auf Fehler untersucht. Sollten Probleme gefunden werden, wird die Pipeline unterbrochen und es können direkt Korrekturen vorgenommen werden. Bei erfolgreichen Tests wird der nächste Step gestartet, nämlich die Integration. Wenn eine Build Pipeline für die interne Entwicklung genutzt wird, ist es möglich, die fertige Software automatisch im Netzwerk zu verteilen. Man spricht hier vom automatischen Deployment.

Automatisierte Steps – wichtige Eigenschaft der Build Pipelines

Eine zweite zentrale Aufgabe der Pipelines ist es, möglichst viele Aufgaben zu automatisieren. Es steht dem Entwickler hierbei offen, welche Steps er automatisch ausführen lässt und welche er manuell anschiebt oder abarbeitet. Besonders die Testphasen bieten sich beispielsweise für automatisierte Abläufe an. Die Testphase ist ein wichtiger Schritt in der Softwareentwicklung. Sie ist oftmals sehr zeitaufwendig, da unterschiedliche Settings und Konfigurationen berücksichtigt werden müssen. Dies reicht von unterschiedlichen Betriebssystemen, auf denen die Software einmal laufen soll, bis hin zu Wechselwirkungen mit verschiedenen anderen Programmen. Das Ziel dieses Steps ist es zum einen, Bugs zu finden. Zum anderen geht es auch um die Performance und die Zuverlässigkeit. Dies sind Tests, die automatisch abgearbeitet werden können, wenn sie entsprechend in der Build Pipeline konfiguriert sind. Es ist selbstverständlich auch möglich, die komplette Build Pipeline zu automatisieren. In diesem Fall wird ein Quellcode mithilfe des Scripts durch alle Phasen geführt. Sollten alle Steps erfolgreich absolviert werden, sorgt die Build Pipeline auch für die automatische Integration und das Deployment.

Die Vorteile von Build Pipelines im Überblick

Die Stärken einer Build Pipeline zeigen sich vor allem dann, wenn der Arbeitsaufwand mit einer manuellen Alternative verglichen wird. Im optimalen Fall ist die Build Pipeline in der Lage, einen Quellcode zu kompilieren, alle benötigten Tests durchzuführen und die fertige Software entsprechend den Vorgaben zu verteilen. Wichtig ist es, die Tests korrekt zu definieren. Mithilfe dieser Tests ist es möglich, sofort zu erkennen, ob eine Software fehlerfrei und somit bereit für das Deployment ist. Sollten Fehler auftauchen, erkennt der Entwickler sofort, an welcher Stelle das Problem liegt und kann entsprechende Veränderungen vornehmen.

Ein weiterer Vorteil ist, dass nur fehlerfreie Builds ins Deployment übernommen werden. Dank dieser Eigenschaften ist das Prinzip der Build Pipelines dafür geeignet, Software komplett automatisch durch die Kompilierung, das Testing und das Deployment zu führen. Praktisch ist das System auch für die Implementierung von automatischen Updates. Kleine Veränderungen werden ohne großen manuellen Aufwand ausgiebig getestet und automatisch implementiert. Da in der Regel die gleichen Testroutinen zum Einsatz kommen, ist der Aufwand bei der Erstellung des Scripts für die Pipeline minimal.

Nach oben