Geschrieben von Thomas Kruse
am 2. Oktober 2020
Ein typisches Java Projekt besteht nicht nur aus dem eigenen Code, sondern in der Regel auch vielen externen Bibliotheken als Abhängigkeiten.
Diese Abhängigkeiten machen dabei in einem Microservice mehr als 90% Anteil am gesamten Code aus.
Die Wartung erfolgt zwar durch den jeweiligen Hersteller, jedoch muss das Projekt Team darauf achten, dass entsprechende Aktualisierungen auch im Projekt aufgenommen werden.
Kritisch wird es dann, wenn Sicherheitsupdates zwar verfügbar sind, jedoch nicht die zugehörige Maven oder Gradle Konfiguration aktualisiert wird.
Um das Problem zu lösen gibt es verschiedene Ansätze mit einem unterschiedlichen Automatisierungsgrad.
Wir wollen einen pragmatischen Ansatz vorstellen, der sich in der Praxis sehr bewährt hat und seinerseits keine zusätzlichen Abhängigkeiten einführt.
Geschrieben von Thomas Kruse
am 6. September 2017
Im zweiten Teil der Artikelserie rund um das Thema Buildautomatisierung mit Jenkins für JavaScript-Anwendungen wird die Verwendung des Jenkinsfile beschrieben.
Ein Jenkinsfile wird genau wie die entwickelte Software selbst verwaltet. Diese Infrastructure-as-Code erlaubt es, die gleichen Vorgehensweisen zur Entwicklung, Test und Qualitätssicherung der Infastruktur zu verwenden, wie für den eigentlichen Quellcode.
Geschrieben von Thomas Kruse
am 18. August 2017
Bei der Nutzung von eigenen Docker-Images stellt sich früher oder später die Frage, wie eine sinnvolle Build-Automatisierung am besten umgesetzt wird.
Der Docker-Host, auf dem die Images gebaut werden, läuft früher oder später in Probleme durch verwaiste Volumes, Image-Layer und ganze Images.
Soll auch der Buildserver als Docker-Container betrieben werden, so wird die Situation noch etwas komplizierter:
Auf keinen Fall soll versehentlich ein Container während des Builds oder sogar der Container des Buildservers selbst "aufgeräumt" werden.
Damit ergeben sich im Prinzip folgende Optionen
-
Sehr sorgfältig erstellte Clean-Up Jobs
-
Verwendung von Docker-in-Docker zur Isolation des Docker-Image Builds
-
Verwendung eines speziellen Build-Slave, der eine Docker Buildumgebung bereitstellt und jederzeit entsorgt und neu erstellt werden kann
Die zuletzt genannte Option wird im folgenden exemplarisch mit Jenkins, Ansible und Vagrant/VirtualBox vorgestellt.
Vagrant dient dabei lediglich zur Veranschaulichung, in produktiven Umgebungen wird man auf Cloud-Resourcen oder VMware ESX zurückgreifen.
Geschrieben von Thomas Kruse
am 6. Juli 2017
Moderne Softwareentwicklung zeichnet sich durch schnelle Auslieferung in hoher Qualtiät aus.
Neben iterativer oder agiler Entwicklungsmethoden und Frameworks, die sich durch eine hohe Produktivität auszeichnen, spielt auch die Herangehensweise bei der Automatisierung von Test, Build und Auslieferung eine wichtige Rolle.
Jenkins ist ein kostenloser Continous-Integration und Buildserver, der sich hervorragend für die Automatisierung von Abläufen rund um den Softwareentwicklungsprozess eignet.