Optimierung und Automatisierung von CI/CD für ein Unternehmen
Optimierung und Automatisierung von CI/CD für ein Unternehmen
Information
Standort:
Weltweit
Branche:
Telekommunikation
Plattform:
Web
Arbeitsmodell:
Engagiertes Team
Projektdauer:
6 Monate
Team-Mitglieder:
3 Entwickler
Verwendete Technologien
Jenkins
Groovy

Der Kunde

Der Kunde ist ein globales Technologieunternehmen, das Infrastrukturmanagementlösungen für Unternehmen aller Industriesektoren sowie der gesamten Automobil- und Kommunikationsbranche produziert und liefert.

Herausforderung

Die Entwicklung war in den letzten Jahren für den Kunden zeitaufwändig.

Erstens verfügt der Kunde über eine breite Palette an Infrastrukturlösungen, die regelmäßige Tests, Updates und neue Releases einmal im Quartal erfordern. Es handelt sich um einen gewaltigen Arbeitsumfang, ganz zu schweigen von der Größe der Produkte des Kunden.

Auch die Tatsache, dass die mit der Entwicklung betrauten Teams an unterschiedlichen Standorten sitzen, vergleicht den gesamten Arbeitsablauf.

Das Digital-Experience-Team, dessen Aufgabe es ist, die Infrastruktur für Entwickler und Kunden zu unterstützen, benötigte eindeutig Hilfe bei der Optimierung und Automatisierung des CI/CD-Prozesses.

Der Kunde erwartete einen schnelleren, automatisierten und einfach zu wartenden CI/CD-Workflow, der für verschiedene Projekte geeignet ist.

Nach einer erfolgreichen Zusammenarbeit mit dem Kunden in der Vergangenheit trat das Elinext-Team bei und fügte dem Vorstand drei Entwickler hinzu.

Über die Lösung

Die Lösung ist eine Pipeline, die eine Reihe automatisierter Aktionen zur Ausführung des Entwicklungsprozesses enthält.

Diese Aktionen stellen Instrumente zur Durchführung der folgenden Testaufgaben dar: Build, Bereitstellung, Scan und Integration.

Der Vorteil der Verwendung einer gemeinsamen Pipeline liegt in ihrer Flexibilität – sie kann auf jedes Projekt angewendet werden. Vor dieser Lösung mussten Entwickler für jede Komponente separate Pipelines erstellen, was zu doppeltem Code und einer ineffizienten Nutzung der Arbeitszeit führte.

Entwicklungsteams können die Pipeline entsprechend ihren Anforderungen modifizieren. Sie können beispielsweise eine bestehende Lösung um eine neue Funktionalität bereichern. Es müssen lediglich ein paar Codezeilen hinzugefügt werden, anstatt ein separates Programm zu erstellen.

Eine weitere in der Lösung verfügbare Funktion ist die Möglichkeit, bestimmte Build-Phasen zu überspringen. Dies ist eine nützliche Funktion, wenn ein Entwickler unabhängig von der Standardeinstellung nur Ergebnisse scannen oder bestimmte See-Branches bereitstellen muss.

Die Lösung wurde mit Jenkins erstellt, einem Open-Source-Automatisierungsserver zum Erstellen und Bereitstellen von Software. Insgesamt dauerte die Fertigstellung des Projekts fünf Phasen.

Phase 1 – Design. Sammeln von Anforderungen und Bestimmen, wie Endbenutzer mit der Lösung interagieren, sobald sie fertiggestellt ist.

Phase 2 – Scanaufträge. Erstellung der drei Scan-Jobs, um Komponenten auf ihre Schwachstellen zu überprüfen:

  • Blackduck – es identifiziert Open-Source-Komponenten und scannt sie auf Compliance-Probleme und Risiken
  • Coverity – es erkennt Sicherheitslücken in Code, der von Elinext-Entwicklern geschrieben wurde
  • Sonar – es analysiert die Qualität des Quellcodes

Die Scanaufträge können parallel ausgeführt werden und haben keine Auswirkungen auf den Rest der Pipeline. Dieselben Scan-Jobs können für verschiedene Komponenten angewendet werden, wodurch die Zeit der Entwickler optimiert wird. Wir haben sie später getestet, indem wir Jobs aus verschiedenen Legacy-Pipelines aufgerufen haben, um nach Fehlern wie fehlenden Parametern oder Fehlkonfigurationen zu suchen. 

Phase 3 – P.O.C. Erstellen der ersten Iteration einer gemeinsamen Pipeline, die mehrere Build-Typen unterstützen würde, hauptsächlich Java-Builds mit Maven oder Gradle.

Phase 4 – Gemeinsame Bibliothek. Das Verschieben von Code in eine zentrale Bibliothek bietet Entwicklungsteams die Möglichkeit, bestimmte Jobs aus einer Pipeline auszulösen, anstatt sie noch einmal von Grund auf neu zu erstellen.

Alle Änderungen, die in der Bibliothek vorgenommen werden, werden dort zentralisiert. Das bedeutet, dass die Änderungen automatisch auf alle Komponenten angewendet werden, wenn ein Entwickler einen Fix an der gemeinsam genutzten Bibliothek implementiert. Die Funktionalität der gemeinsamen Pipeline wurde später erweitert, um alle Build-Typen zu unterstützen.

Phase 5 – Feedback. Sammeln eines Kundenfeedbacks und Behebung der etwaigen Probleme mit unserer Arbeit an der Pipeline.

Ergebnisse

Das Projekt dauerte über sechs Monate und brachte dem Kunden zufriedenstellende Ergebnisse – die Entwicklungszeit wurde von Anfang bis Ende um 40 % verkürzt. Darüber hinaus führt es zu einer Kostenoptimierung, da weniger Hardware für den Entwicklungsprozess benötigt wird.

Die Pipeline ist ein flexibles Tool, das es uns ermöglicht, Komponenten schneller und einfacher zu konfigurieren, ohne dabei die Qualität oder Sicherheitsmaßnahmen zu beeinträchtigen.

1-106
2-100
3-81
4-66
5-59
Haben Sie vor, ein gleiches Projekt zu schaffen?
Haben Sie eine Projektidee? Lassen Sie uns darüber diskutieren
Kontakt