Neuigkeiten von trion.
Immer gut informiert.

Artikel in der Kategorie 'ci'

GitLab CI Code Coverage bei Multi-Module Maven Projekt 2 Okt

Geschrieben von Thomas Kruse am 2. Oktober 2020
GitLab

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.

GitLab CI Code Coverage bei Multi-Module Maven Projekt 3 Aug

Geschrieben von Thomas Kruse am 3. August 2020
GitLab

Auch wenn Microservice Architekturen und damit einhergehend Single-Module-Repositories im Trend liegen, gibt es immer wieder Gründe für ein Multi-Module Projekt. Sogar bei Microservice als Deployment.
Wenn es nun darum geht, die Code-Coverage zu ermitteln, um diese bei GitLab CI anzuzeigen oder Trends zu ermitteln, muss man sich etwas behelfen. GitLab CI ist im Verglech zu Jenkins nämlich deutlich dünner ausgestattet, so dass eine Fancy Plugins die Arbeit abnehmen. Damit ist Jenkins nicht automatisch besser oder GitLab CI schlechter, als Jenkins: Die Ausrichtung ist einfach anders.

Im folgenden betrachten wir einmal, wie die modulübergreifende Auswertung von Code Coverage, erhoben mit dem JaCoCo Maven Plugin, aussehen könnte. Der Ansatz lässt sich natürlich auf andere Coverage-Tools und Sprachen analog übertragen.

React Anwendungen mit Cypress in Docker testen 4 Mai

Geschrieben von Karsten Sitterberg am 4. Mai 2020
React

Container, allen voran Docker, sind in aktuellen Infrastrukturen ein fester Bestandteil. Waren früher gerade Buildserver und CI-Umgebungen schwer zu warten, da diverse Werkzeuge oftmals jeweils in mehreren Versionen gepflegt werden müssen, können Build-Container alle benötigten Werkzeuge direkt mitbringen.

Moderne Buildserver wie DroneCI oder GitLab CI unterstützen daher nativ die Verwendung von Werkzeugcontainern in Form von Docker Images. Für Angular gibt es beispielsweise mit https://hub.docker.com/r/trion/ng-cli-karma ein Image, in dem Angular CLI und Webbrowser bereitgestellt werden.

In diesem Beitrag werfen wir einen Blick auf Cypress, dass sich sehr gut zur Umsetzung von Integrations- und Ende-zu-Ende Tests eignet. Cypress kann prinzipiell mit beliebigen Technologien kombiniert werden, beispielsweise serverseitig gerenderten Anwendungen, oder mit Angular, React oder Vue im Browser umgesetzten Anwendungen.
Wir verwenden in diesem Beispiel React, jedoch sollte die Übertragung auf andere Frameworks dem Entwickler sehr einfach von der Hand gehen.

Angular Anwendungen auf GitHub Pages mit GitHub Actions publizieren 8 Apr

Geschrieben von Karsten Sitterberg am 8. April 2020
Angular

Im vorhergehenden Artikel wurde der Einsatz von GitHub Actions beschrieben, um eine Angular Anwendungen auf GitHub zu testen und zu bauen.
Das Thema Deployment wurde dabei aufgrund der Vielzahl an Varianten nicht weiter behandelt. In diesem Beitrag wird nun erklärt, wie die ebenfalls von GitHub bereitgestellte Plattform zum Hosting von statischen Seiten, GitHub Pages, genutzt werden kann, um darauf eine Angular Anwendung bereitzustellen.

Der große Vorteil von clientseitigen Frameworks kommt dabei voll zur Geltung: Es wird lediglich ein simpler Webserver benötigt, der die HTML, JavaScript und CSS Dateien ausliefert. Serverseitige Logik wird für das Angular Frontend an sich nicht benötigt.

Angular Build mit GitHub Actions 31 Mär

Geschrieben von Karsten Sitterberg am 31. März 2020
Angular

GitHub Actions ermöglichen es, Reaktionen auszulösen, wenn in einem GitHub Repository Ereignisse eintreten.
Damit lässt sich beispielsweise Generierung von Dokumentation, oder Build und Test von Programmcode umsetzen, ohne einen zusätzlichen CI-Server zu benötigen.

Anders als viele andere CI Lösungen, wie beispielsweise GitLab-CI, setzt GitHub Actions dabei auf vordefinierte Umgebungen und nicht auf Container.
Allerdings lassen sich neben den in den Umgebungen vorhandenen Standardwerkzeugen auch zusätzliche Actions hinzunehmen. Bei Actions handelt es sich um wiederverwendbare Code-Bausteine. Außer von GitHub oder dem eigenen Repository können Actions auch auf einem Marketplace von Drittanbietern, z.B. als Docker-Image, bereitgestellt werden.

Als Umgebungen stehen bei GitHub derzeit Linux, Windows und MacOS zur Verfügung.

Das Ergebnis von GitHub Actions können dann Aktionen unter Verwendung der GitHub API sein. Außerdem können auch Docker-Images erstellt und anschließend in eine Registry gepushed werden.

Wie GitHub Actions genutzt werden können, um eine Angular-Anwendung zu testen und zu bauen, stellen wir in diesem Beitrag vor.

Upload einer NativeScript-App zum Apple App Store mittels Gitlab-CI 15 Aug

Geschrieben von Thomas Kruse am 15. August 2019
GitLab

In den vorherigen NativeScript-Artikeln haben wir zunächst ein kleines HelloWorld-NativeScript-Projekt erstellt und dieses dann auf einem GitLab-Server in einer Pipeline gebaut.

Nun wollen wir einen Schritt weiter gehen und das erstellte Projekt über die GitLab-Pipeline zu App Store Connect hochladen, um damit die Basis für Continuous Delivery zu legen.

Filedownload mit Puppeteer in Docker 1 Aug

Geschrieben von Thomas Kruse am 1. August 2019
puppeteer

Für manche Testszenarien muss auch ein Dateidownload mit getestet werden, z.B. um die resultierende Datei auf Korrektheit zu prüfen. Für Ende-zu-Ende Tests gibt es diverse Werkzeuge, eins davon ist das von Google entwickelte Puppeteer. Mit Puppeteer lässt sich aktuell der Chrome Browser fernsteuern, eine Erweiterung auf Mozilla Firefox ist ebenfalls in Arbeit.

In diesem Beitrag wird gezeigt, wie mit Docker und Puppeteer ein entsprechendes Testszenario umgesetzt werden kann.

NativeScript CI-Builds mit GitLab 26 Jul

Geschrieben von Thomas Kruse am 26. Juli 2019
GitLab

Im letzten Artikel haben wir ein macOS-Environment für NativeScript provisioniert. Nun wollen wir dieses System nutzen und als Runner in Gitlab registrieren, um dort eine CI-Pipeline für ein NativeScript-Projekt zu erstellen.

Kubernetes continuous Integration (CI) 26 Jan

Geschrieben von Thomas Kruse am 26. Januar 2019
Kubernetes

In diesem Kubernetes Beitrag geht es darum, eine CI Pipeline auf Kubernetes Infrastruktur aufzusetzen. Wie bereits in den vorherigen Kubernetes Beiträgen soll auch hier ein Augenmerk auf dem Support der ARM Plattform gelegt werden. Leider trotz der zunehmenden Verbreitung von ARM im Serverumfeld noch immer nicht selbstverständlich, dass Multi-Arch Images bereitgestellt werden.

Android CI-Builds mit Docker 10 Aug

Geschrieben von Karsten Sitterberg am 10. August 2018
Android Logo

Um Anwendungen erfolgreich bauen zu können, ist - je nach Anwendung - ein hoher Aufwand in die Einrichtung der Umgebung zu investieren. Beispielsweise für ein Android-Projekt muss Java installiert sein, es werden die Android-Tools mit dem Android-SDK benötigt und der Build muss passend konfiguriert werden. Dieses Setup wird aber nicht nur auf den Entwickler-Rechnern benötigt, auch die Countinuous-Integration-Umgebung des Buildservers muss entsprechende Werkzeuge bereitstellen. Um Reproduzierbarkeit zu gewährleisten, sollte sichergestellt sein, dass in allen diesen Umgebungen die gleichen Versionen der Tools genutzt werden.

In diesem Artikel werden wir uns damit beschäftigen, wie auf einfachem Wege eine zur Entwicklung von Android-Projekten geeignete Umgebung mit Hilfe von Docker erstellt werden kann. Am Beispiel von Gitlab-CI wird der Einsatz des entsprechenden Docker-Containers in einer CI-Umgebung gezeigt.

Los geht's!

Bitte teilen Sie uns mit, wie wir Sie am besten erreichen können.