Close

Umsetzung Fall 2

Integration eines digitalen Butlers in Form einer Jenkins CI

Cloud_technical

Beschreibung des Anwendungsfalles

Weil der Anwendungsfall 1 sehr schnell und erfolgreich abgeschlossen werden konnte, stellte sich direkt die Frage nach weiterer Automatisierung. Warum? Es ist weniger fehleranfällig, genauer, schneller und robuster.

Der erste Fall sollte erweitert werden, indem ein Jenkins Server in der Cloud instanziiert wird. Ähnlich wie beim Aufsatz von EC2 Instanzen, wurde in einem AMI Jenkins installiert. Der große Unterschied zwischen dieser Instanz und den Instanzen zur Ausführung für den Test ist, dass diese Instanz über die ganze Zeit hinweg laufen wird. 

Der Grund für den dauerhaften Betrieb: Diese Instanz soll die ganze Zeit das angebundene Software-Repository (Versionsmanagement) GIT auf Änderungen am Code und an laufenden Tests überwachen.

Vorteil einer Continuous Integration Instanz

Effektive Qualitätssicherung durch Jenkins

Ändert ein Team-Mitglied einen Teil der Software, wie das Matlab/Simulink-Modell, soll diese Änderung sofort erkannt und geprüft werden. Üblicherweise gibt es in einer Versionsverwaltung für Software mehrere Ebenen.

Zur Qualitätssicherung hat sich das folgende Prinzip etabliert: In den Produktiv-Pfad werden nur Änderungen übernommen, die dem Qualitätsstandard entsprechen. In einem Entwicklungspfad dagegen übergibt die Entwicklung die Änderung an das Versionsmanagement. Dies wird von Jenkins detektiert.

Nun sollen zuerst qualitätssichernde Maßnahmen wie unsere Software-Test zeigen, dass die Änderung auch reif genug für den Produktivpfad ist. 

Wenn sie reif genug ist, wird sie übernommen, wenn nicht, wird die Änderung verworfen und die Entwicklung bekommt das Feedback, dass die Änderung Probleme macht. Das passiert meist per Mail von Jenkins.

Pluspunkte bei der Jenkins-Nutzung

  • Jenkins übernimmt den Job des Anwenders und kann Tests starten. 
  • Jenkins übernimmt die kontinuierliche Überwachung der korrekten Ausführung und schließt die Instanzen, sobald sie fertig sind.
  • Betriebsprozesse können beliebig definiert und einfach umgesetzt werden.
  • Jenkins ist sehr einfach zu konfigurieren.
  • Webbasierte Benutzeroberfläche, auf der bequem von jedem Computer mit den entsprechenden Zugriffsrechten alles konfiguriert und gesteuert werden kann.
  • Nahtlose Integration mit Versionskontrollsystemen, wie GitLab und GitHub über sogenannte Webhooks.

Jenkins bietet zudem eine breite Palette nützlicher Plugins, darunter auch das EC2-Plugin. Mit dessen Hilfe werden EC2-Instanzen automatisch gestartet, überwacht und Pipeline-Jobs (Tests) ausgeführt.

Cloud-basierte Testumgebung von Jenkins CI – die Architektur für den Anwendungsfall 2

Zusammenfassung für Anwendungsfall 2

Anwendungsfall 2 konnte erfolgreich umgesetzt werden und stellt eine beeindruckende Integration von Cloud-Diensten in unsere CI-Umgebung dar. Die nahtlose Einbindung gelang mühelos, dank der guten Dokumentation der verwendeten Plugins.

Security-Aktivitäten
Ein Großteil der Arbeit konzentrierte sich auf Sicherheitsaktivitäten, wie beispielsweise das Öffnen von Inbound-Ports und die Einrichtung von WebHooks, um Dateien aus privaten Repositories abzurufen und den Zugriff mittels Zugangstoken zu verwalten.
Kommunikationsbeziehungen

Zusätzlich mussten Kommunikationsbeziehungen zwischen den AWS-Diensten und dem Jenkins-Server hergestellt werden, um die automatische Skalierung durch das automatische Erzeugen und Verbinden neuer Instanzen zu ermöglichen. Dank dieser innovativen Lösung konnten wir die Herausforderungen des Anwendungsfalls 1 erfolgreich bewältigen.

Vorteile der Autoscaling-Lösung

Sobald Änderungen im Git-Repository vorgenommen werden, initiiert der Jenkins-Server automatisch die Erzeugung neuer EC2-Instanzen und startet die Ausführung der Pipeline-Jobs. Dieser effiziente Prozess ermöglicht es, schnell auf Änderungen zu reagieren und kontinuierlich zu liefern.
Der Jenkins-Server überwacht eigenständig die erstellten Instanzen und beendet sie unverzüglich, sobald die Testfälle abgeschlossen sind und die Ergebnisse hochgeladen wurden. Diese automatische Bereinigung gewährleistet die optimale Ausnutzung der Ressourcen und trägt zu einer effizienten Nutzung der Cloud-Dienste bei.

Aktuelle Herausforderungen

Die aktuelle Lösung erkennt nicht automatisch, wenn Testfälle hängen und länger als erwartet laufen und nicht rechtzeitig beendet werden.

Lösungsvorschlag

Interne Überwachungsmechanismen, sogenannter “Watchdogs”, können implementiert werden. Diese Watchdogs können Testfälle stoppen, falls sie unerwartet lange dauern, um die Ausführungszeit zu kontrollieren und Engpässe zu vermeiden.