Agon Newsletter 01 / 2014.

 

 

Zurück

Jenkins – ein Werkzeug zur Umsetzung der kontinuierlichen Integration

Eine der Hauptschwierigkeiten bei der Entwicklung von komplexer Software besteht in der Koordination des Entwicklungsteams. Zusätzlich sind die Anforderungen in Richtung Erweiterbarkeit und Korrektheit sehr hoch. Aus diesem Grunde erwächst die Notwendigkeit, regelmäßig die einzelnen Softwarekomponenten durch einen Build zu integrieren. Die im Rahmen eines Test-Frameworks erstellten Modultestfälle sollten dabei möglichst immer ausgeführt werden. Wenn dabei kein Fehler auftritt, soll anschließend für die lauffähige Software ein Deployment vorgenommen werden. Nach dem Deployment in eine Testumgebung sollten schließlich noch Integrationstests ermöglicht werden. Dieser Ablauf geschieht in automatisierter Form mit Hilfe von Werkzeugen, die den Prinzipien der kontinuierlichen Integration (continuous integration) genügen.

Einen der populärsten Vertreter stellt in dieser Hinsicht die webbasierte Open- Source-Software Jenkins. (www.jenkins-ci.org), dar. Sie ist als Java-Anwendung plattformunabhängig und durch zahlreiche Plugins in vielfältiger Hinsicht erweiterbar. Dies ermöglicht den Einsatz von Jenkins im Zusammenspiel mit den am weitesten verbreiteten Versionsverwaltungssystemen. Auch die wichtigsten Vertreter von Build-Management-Software und bekannte Test-Frameworks für verschiedene Programmiersprachen wie z.B. JUnit für Java, werden unterstützt. Wie die Einbindung von Jenkins in eine Software-Entwicklungsumgebung (SEU) erfolgt, zeigt die nachfolgende schematische Abbildung.

Die Nutzung von Jenkins kann entweder durch den Aufruf einer vorher installierten betriebssystemabhängigen Datei oder durch das Deployment einer war-Datei in einen Applikationsserver bewerkstelligt werden. Der Zugang über einen Web-Browser gestattet, sofort globale Konfigurationseinstellungen vorzunehmen und eine Nutzerverwaltung einzurichten. Danach kann begonnen werden, für ein gegebenes Softwareprojekt einen entsprechenden Jenkins-Job anzulegen. Dessen Konfiguration umfasst in Abhängigkeit von den Komponenten der Software-Entwicklungsumgebung vor allem Angaben über Pfade, über den Auslöser des Builds und Angaben über Aktionen, die nach einem erfolgreichen Build stattfinden sollen. Das kann z.B. die Benachrichtigung über die Ergebnisse eines ausgeführten Jenkins-Jobs, die Erstellung von Reports oder das Deployment der Software sein. Damit ist es möglich, den Jenkins-Job zu starten, sich die Ergebnisse des Builds und der Modultests in der Weboberfläche anzeigen zu lassen und bei erfolgreichem Verlauf auf die lauffähigen Softwareartefakte zuzugreifen. 

Die Vorteile einer solchen Herangehensweise liegen auf der Hand. So ist es möglich, bereits in einer frühen Entwicklungsphase auf Build- und Softwareprobleme zu reagieren. Gleichzeitig hat man damit einen automatisierten Modultest realisiert, der sehr regelmäßig ausgeführt wird und so Seiteneffekte frühzeitig aufdeckt. Zum anderen steht nach einem erfolgreichen Build-Verlauf stets eine lauffähige Anwendung zur Verfügung. Für eine weitgehend automatische Durchführung der kontinuierlichen Integration empfehlen sich allerdings die Verwendung einer dedizierten Testumgebung und eine regelmäßige Pflege der Software-Entwicklungsumgebung.

Somit stellt Jenkins ein nützliches Werkzeug dar, die Softwareentwicklung strukturierter, mit höherer Qualität und effizienter zu gestalten.