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.
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.
Moderne Softwareentwicklung zeichnet sich durch schnelle Auslieferung in hoher Qualitä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.
Docker hat mit Version 17.05 sogenannte Multi-Stage Builds eingeführt.
Dieser Beitrag zeigt, wie Docker-Multi-Stage-Builds effektiv für Angular-Anwendungen eingesetzt werden können und um was es sich bei Docker-Multi-Stage-Builds überhaupt handelt.
Dieser Artikel zeigt, wie sich mit wenigen Schritten eine komfortable und leicht zu wartende Umgebung für Entwicklung und lokale Tests von Java Spring-Boot und TypeScript Angular Anwendungen erstellen lässt.
Vorweg stellt sich die Frage: Warum sind neue Ansätze sinnvoll und was steckt hinter den eingesetzten Technologien?
Dieser Artikel veranschaulicht den Aufbau einer Docker-basierten Entwicklungsumgebung für Kafka und zeigt, wie die benötigten Infrastrukturkomponenten auf einfache Weise mit Docker Compose bereitgestellt werden können.
Der Artikel "Angular Security Architektur in der Praxis" von Karsten Sitterberg im aktuellen PHP-Magazin zeigt wichtige Konzepte und die praktische Anwendung rund um Sicherheit bei Angular Anwendungen auf.
Im Fokus stehen dabei die Themen Authentifizierung und Autorisierung und daraus folgende Konsequenzen aus Sicht einer Angular Webanwendung.
In diesem Artikel geht es um Serialisierungs-Frameworks mit Schemaunterstützung und die Evolution von Schemata unter Berücksichtigung der Kompatibilität.
Im April hat Thomas Kruse in München einen Workshop zum Thema "Reactive Programming" mit Java gegeben.
Die kostenlose Veranstaltung richtete sich an alle interessierten Personen, die in rund zwei Stunden sowohl Hintergründe zu reaktiver Programmierung, als auch erste eigene praktische Erfahrungen sammeln wollten.
Dieser Artikel erläutert am Beispiel eines Angular CLI Dockerfiles den Aufbau eines Docker Containers zur Ausführung von Builds.
Die Verwendung des Containers wurde in Docker Build für Angular CLI erklärt. Der fertige Container ist via DockerHub unter trion/ng-cli verfügbar. Das zugehörige Repository bei GitHub findet sich unter https://github.com/trion-development/docker-ng-cli
Der obere Teil des Dockerfile definiert das verwendete Basis Image und deklariert Parameter, die beim Build des Images spezifiziert werden können.