Suchen

Continuous Integration und Delivery Open-Source-Automatisierung mit Jenkins

| Autor / Redakteur: Thomas Joos / Stephan Augsten

In Unternehmen spielt die Automatisierung generell, vor allem die automatisierte Bereitstellung von Betriebssystemen und Anwendungen eine wichtige Rolle. Jenkins ist ein wertvolles Hilfsmittel dafür.

Firmen zum Thema

Mit der deklarativen Syntax lassen sich in Jenkins auch Pipeline-Definitionen umsetzen.
Mit der deklarativen Syntax lassen sich in Jenkins auch Pipeline-Definitionen umsetzen.
(Bild: Jenkins.io)

Mit Jenkins lassen sich Automatisierungen im Netzwerk umsetzen, auch mit Containern. Der Automation-Server ist aber auch ohne den Einsatz der Container-Technologie ein wertvolles Hilfsmittel, wenn im Netzwerk auch Automatisierungs-Aufgaben im Rahmen der DevOps-Bewegung umgesetzt werden sollen.

Wer mit Continuous Delivery und Continuous Integration arbeitet, dürfte automatisch auch an Jenkins denken. Mit BlueOcean (https://jenkins.io/doc/book/blueocean) erhält Jenkins ein neues Interface, das mehr Möglichkeiten bietet und eine einfachere Verwaltung verspricht. So lassen sich mit BlueOcean zum Beispiel komplette Delivery-Pipelines in der grafischen Oberfläche erstellen.

Häufig lassen sich Probleme bei monolithischen Anwendungen durch Continuous Delivery und Continuous Integration bereits beheben. Eine höhere Qualität der vorhandenen Anwendung kann in vielen Fällen Lösungen schaffen, die sich die Verantwortlichen durch die Implementation von Microservices erhoffen.

Mit Jenkins bessere Continuous Integration im Netzwerk nutzen

Continuous Integration (CI), also „kontinuierliche Integration“, lässt sich in modernen Umgebungen zur Software-Entwicklung kaum mehr umgehen. Unternehmen, die schnell und effizient Software entwickeln und bereitstellen wollen, sollten sich die Möglichkeiten von CI ansehen.

CI stellt den Prozess dar, der die Kompilierung, Verwaltung und Bereitstellung verwaltet. Der Vorteil bei einer solchen Infrastruktur, die CI nutzt, besteht vor allem auch darin, dass Fehler schneller gefunden und behoben werden können. Außerdem wird die Bereitstellung schneller durchgeführt.

Bei der Verwendung von CI können Entwickler regelmäßig neue Funktionen ihrer Anwendung bereitstellen, indem sie durch Kompilierung neue Versionen erstellen und Änderungen im Code schneller in die Verwaltung einchecken und damit auch bereitstellen. Wichtig ist dabei natürlich, dass neue Funktionen schneller und stabiler integriert werden. Das vermeidet, dass Anwender in größeren Zeitabständen neue Versionen von Anwendungen erhalten, die sehr viele neue Funktionen enthält oder sogar neue Oberflächen.

Die Idee der kontinuierlichen Integration ist es, dass die Entwickler frühzeitig und regelmäßig Änderungen in das Versionsmanagement einchecken. Diese Änderungen sollten funktionsfähig sein. Die neuen Funktionen werden in der Anwendung genutzt, wodurch Probleme schneller erkannt werden, die zum Beispiel durch die Integration des neuen Codes entstehen.

Durch CI lassen sich Anwendungen schneller aktualisieren

Neue Versionen einer vorhandenen Anwendung, die auch neue Funktionen bietet, können für den internen Test, den internen Betrieb oder für den Vertrieb verwendet werden. Dadurch steigt die Produktivität der Entwicklungsabteilung, weil die Anwendung mit immer neuen Funktionen im Idealfall effizienter wird und somit auch Akzeptanz steigt.

Jenkins als CI-Werkzeug

Um CI im Unternehmen zu nutzen, sind Werkzeuge notwendig, die bei der Umsetzung helfen. Ein bekanntes Beispiel dafür ist Jenkins (ehemals Hudson). Dabei handelt es sich um ein webbasiertes Open-Source-System zur Continuous Integration. Jenkins baut auf Java auf und ist plattformunabhängig. Jenkins unterstützt viele Werkzeuge und Systeme. Außerdem werden durch Plug-ins ständig neue Funktionen in das System integriert.

Die CI-Lösung ist daher sehr flexibel und lässt sich in so gut wie allen Umgebungen integrieren und effizient betreiben. Auch für Projekte mit PHP, Ruby oder Microsoft .NET lässt sich Jenkins nutzen. Dabei können auch zusätzliche Funktionen wie Testwerkzeuge integrieren. Auch dazu werden Plug-ins genutzt, die sich schnell und einfach integrieren lassen.

Jenkins selbst wird nahezu wöchentlich aktualisiert und erweitert. Wer nicht alle Versionen mitmachen will, kann auch die Long Term Support-Version einsetzen. Jenkins steht generell für viele Plattformen zur Verfügung, zum Beispiel Windows, Linux, oder Mac OS X. Hier stehen Installationspakete zur Verfügung, die schnell und einfach integriert werden können.

Am Beispiel von Windows erfolgt die Installation über eine Setup-Datei. Diese installiert auch die notwendigen Erweiterungen für .NET. Die Installation entspricht der von anderen Windows-Programmen. Jenkins wird in Windows als Systemdienst integriert. Der Dienst kann jederzeit gestartet, gestoppt oder neu gestartet werden, so wie andere Systemdienste in Windows.

Wenn der Dienst gestartet ist, steht er über die Webseite zur Verfügung, die durch den Dienst zur Verfügung gestellt wird. Standardmäßig wird Jenkins über den Port 8080, zum Beispiel der Adresse http://hostname:8080 erreicht. In produktiven Umgebungen sollte nicht auf den integrierten Webserver gesetzt werden, da dieser zu unsicher ist. Besser ist die Verwendung von Apache, der vor den Jenkins-Webserver positioniert wird.

Deklaratives Pipeline-Modell für Jenkins

Mit der deklarativen Syntax lassen sich in Jenkins auch Pipeline-Definitionen umsetzen. Dieser Ansatz ist zum Beispiel notwendig, wenn neben Continuous Integration auch Continuous Delivery effizient genutzt werden soll. Standardmäßig unterstützt Jenkins eine DSL (Domain-Specific Language) auf Basis von Groovy.

Durch die Verwendung von „Pipeline: Model Definition“ können Entwickler deklarativ arbeiten und müssen keinen Code mehr für die Bereitstellung nutzen. Interessant ist an dieser Stelle auch die Unterstützung des Plug-ins zum Erstellen von Containern über Pipelines.

(ID:44865799)

Über den Autor

 Thomas Joos

Thomas Joos

Freiberuflicher Autor und Journalist