© Excellent backgrounds/Shutterstock.com
Fünf Continuous-Delivery-Systeme im Vergleich

Der Softwarelieferheld


Können Sie diese Frage beantworten: „Wie lange dauert es in Ihrem Unternehmen, bis eine Änderung deployt ist, die nur aus einer Zeile geändertem Code besteht?“ Und ebenfalls die anschließende Frage: „Passiert dies auf einer wiederholbaren und zuverlässigen Basis?“ Wenn Ihnen die Beantwortung der beiden Fragen Kopfschmerzen bereitet, lohnt ein Blick auf diese fünf Systeme für die Implementierung von Continuous-Delivery-Pipelines.

Die beiden Fragen „Wie lange dauert es in Ihrem Unternehmen, bis eine Änderung deployt ist, die nur aus einer Zeile geändertem Code besteht?“ und „Passiert dies auf einer wiederholbaren und zuverlässigen Basis?“ stammen von Mary und Tom Poppendiek und sind die Leitfragen zu Continuous Delivery. In diesem Artikel wollen wir aber nicht über die Konzepte von Continuous Delivery schreiben, sondern über fünf Systeme für die Implementierung von Continuous-Delivery-Pipelines. Da wir uns im Cloud-Zeitalter befinden, schauen wir uns nicht nur Systeme an, die auf eigenen (Cloud-)Servern installiert werden können, sondern auch zwei Systeme, die nur als Cloud-Service angeboten werden.

Atlassian Bamboo: Ergänzung zu JIRA und Confluence

Das erste Continuous-Delivery-System, das wir uns ansehen wollen, ist Bamboo [1] von der Firma Atlassian, die auch für die bekannten Tools JIRA, Confluence und HipChat verantwortlich sind. Bamboo ist ein kommerzielles Produkt, dessen Preisstaffelung unter [2] gefunden werden kann. Neben der klassischen Installation auf den eigenen (Cloud-)Servern bietet Atlassian für seine gesamte Produktpalette eine Cloud-Lösung, für die man eine monatliche Abogebühr zahlen muss. Die Preisstaffelung dazu findet man ebenfalls unter [2]. Auch wenn Bamboo ein kommerzielles Produkt ist, haben Sie als Lizenznehmer Zugriff auf die Sourcen.

Die Installation gestaltet sich denkbar einfach. Es kann ein Archiv von der Webseite [1] geladen werden. Dieses wird entpackt und der Server gestartet. Ein webbasierter Assistent führt dann durch die nächsten Schritte. Vorweg etwas zur Benutzerverwaltung: Wer die Produkte von Atlassian kennt, weiß, dass man JIRA für die zentrale Benutzerverwaltung verwenden kann. Das funktioniert auch mit Bamboo. Benutzer und Gruppenzugehörigkeiten aus JIRA lassen sich in Bamboo ebenfalls verwenden.

Bamboo geht mit dem vollmundigen Versprechen „Continuous delivery from code to deployment“ an den Start. Das Featureset spricht dafür, dass dieses Versprechen eingehalten werden kann:

  • Trennung von Build und Deployment auf verschiedene Umgebungen

  • Unterstützung von Feature- und Story-Branches

  • Natives Staging-Konzept

  • Integration mit JIRA und HipChat

In Bamboo nennen sich die einzelnen Jobs Build-Pläne. Der erste Schritt ist es einen solchen anzulegen. Build-Pläne werden in Projekten gruppiert. Ein Projekt lässt sich im gleichen Schritt mit anlegen. Innerhalb eines Build-Plans gibt man das Code-Repository an und konfiguriert die benötigten Tasks. Ein Task ist eine Aufgabe, die erledigt werden soll, wie Compile oder Test. Ist dieser Schritt abgeschlossen, hat man die erste ­Stage schon konfiguriert. Man kann den Plan direkt ausführen und live dabei zusehen, was im Einzelnen passiert. Schlägt ein Test fehl, kann man aus der Fehlermeldung direkt einen Bug in JIRA einstellen (Abb. 1).

Die nächste Stage wären weiterführende Tests, z. B. Integrationstests. Innerhalb des Build-Plans erstellt man eine neue Stage und konfiguriert die benötigten Tasks. Denkbar wären der Checkout, Compile, Deploy in eine lokale Docker-Infrastruktur oder das Ausführen der Integrationstests. So kann man Schritt für Schritt die eigene Continuous-Delivery-Pipeline erweitern.

kamann_continuous-delivery_1.tif_fmt1.jpgAbb. 1: Das Bamboo-Dashboard zeigt die verschiedenen Build-Pläne

Ein weiteres interessantes Feature ist die Unterstützung von Feature- und Story-Branches. Wenn man für den Master einen Build-Plan konfiguriert hat, erkennt Bamboo die davon abgezweigten Branches und kopiert den Build-Plan für diesen Branch. Dieses Feature ist für Git, Mercurial und Subversion verfügbar. Zusätzlich kann man konfigurieren, ob der Branch automatisch gelöscht werden soll. Dafür gibt es verschiedene Strategien. Genaueres erfährt man unter [3]. Bamboo kann Änderungen eines Branches direkt zurück in den Ursprungs-Branch mergen. Auch hierfür gibt es zwei Strategien, die unter [3] detaillierter erklärt sind. Wenn eines Tages der Zeitpunkt kommt – wir hoffen früher als später –, an dem man sein Produkt auf Servern deployen will, die außerhalb der Entwicklung liegen, helfen die Bamboo-Deployment-Projekte.

kamann_continuous-delivery_2.tif_fmt1.jpgAbb. 2: Wie Build-Pläne und Deployment-Projekte in Bamboo zusammenarbeiten

Wie in Abbildung 2 schematisch zu sehen ist, werden die Artefakte aus den Build-Plänen für die Deployment-Projekte herangezogen. Somit ist es möglich, verschiedene Sourcecode-Stände für die Deployments heranzuziehen. In der Konfiguration eines Deployment-Projekts wählt man den zugrunde liegenden Build-Plan und den zugrunde liegenden Branch. Als Ziel für das Deployment werden Docker, Amazon S3, Heroku und eigene Server unterstützt. Weitere Deployment-Ziele lassen sich mit Add-ons nachrüsten.

Bamboo basiert auf so genannten Agenten. Damit können Build-Pläne und auch Deployment-Projekte auf anderen Servern ausgeführt werden. Somit ist es möglich, bei größeren Projekten oder Unternehmen viele Pläne parallel auszuführen. Seit Neuestem ist auch ein Agent für iOS-basierte Builds verfügbar.

Damit das Entwicklungsteam schnelles Feedback bekommt, unterstützt Bamboo verschiedene Notification-Schemas. Zum einem gibt es die klassische E-Mail, und zum anderen wird das hauseigene Chatsystem HipChat unterstützt. Mittels Add-on lässt sich auch Slack nachrüsten.

Bamboo lässt sich mit Add-ons erweitern. Im Vergleich zu Jenkins ist das Angebot an Add-ons wesentlich geringer, allerdings ist die Qualität hier vergleichsweise höher. Man kann jedoch auch mit dem zur Verfügung stehenden SDK eigene Erweiterungen programmieren.

Vor allem, wenn man andere Tools von Atlassian, wie JIRA oder Confluence, bereits im Einsatz hat, bietet sich Bamboo an. D...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Gewinner-Teams

Wir bieten Lizenz-Lösungen für Teams jeder Größe: Finden Sie heraus, welche Lösung am besten zu Ihnen passt.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang