Julian Tistler        17. November 2022        5 Minuten

CI/CD Pipeline - Lohnt sich der Aufwand?

Ihr überlegt Euch, eine CI/CD Pipeline einzuführen, wisst aber nicht, ob sich der Aufwand lohnt? Kein Problem! Wir haben eine CI/CD Pipeline bei uns eingeführt und teilen unsere Erfahrungen gerne mit Euch: von der Arbeitsweise ohne Pipeline über die Einführung der Pipeline bis hin zum Prozess der Anwendungsentwicklung mit Pipeline - und das alles aus erster Hand!

Wie wir bisher gearbeitet haben

Wie viele andere Unternehmen in der IT-Entwicklung haben auch wir uns die zentrale Frage gestellt: Wie kann man Codes am besten ausliefern? Ursprünglich bauten und testeten unsere Softwareentwickler:innen auf derselben Maschine, auf der sie auch programmiert haben. Durch diesen Prozess entstanden Artefakte, die nicht lokal auf dem Rechner, sondern zentral auf dem Server des Unternehmens gespeichert und für jeden Betroffenen zugänglich gemacht werden müssen.

Released wurden Code, Images und Artefakte aber nur auf Gitlab und in unserem Artefaktspeicher. In unserem Arbeitsprozess fand somit nur lokales Testen aber kein extra Quality Assessment und auch keine strikte Standardisierung des Workflows statt. Das bedeutet alle wesentlichen Arbeitsschritte mussten manuell durchgeführt werden. Wenn z.B. ein Build deployed werden sollte, mussten wir die notwendigen Artefakte laden, das Helm-Chart schreiben und anpassen, den Build manuell auf dem Cluster starten etc. Diese manuelle Durchführung der Arbeitsschritte hat uns enorm viel Zeit und Aufwand gekostet.

Wie wir seit der Einführung der CI/CD Pipeline arbeiten

Das erste Problem, das wir lösen wollten, war der nicht standardisierte Workflow. Um eine entsprechende Grundlage für die Standardisierung bereitzustellen, haben wir vollautomatisch ein Gitlab Repository erstellt und mit allem Notwendigen (Branches, Berechtigungen etc.) eingerichtet. Die erstellten Branches im Repository sind ein Development, ein Testing und ein Production Branch mit dem Development Branch als default.

Um ein neues Feature zu entwickeln, wird einer neuer Branch vom Development Branch gezogen. Sobald dieses Feature implementiert ist, kann ein Merge Request auf Dev geöffnet werden. Sobald dieser wiederum geöffnet wird, läuft automatisch eine Pipeline an, die verschiedene Jobs ausführt. Dazu gehören unter anderem das Checken von Lizenzen, Code Quality Assessment, Bauen und Testen von Images bzw. Artefakten und deren Release. Sollte ein Fehler während einer dieser Schritte auftreten, bricht die Pipeline frühzeitig ab, um weiter zu committen und den Fehler zu beheben. Dabei läuft die Pipeline wiederholt an, bis sie vollständig bis zum Ende und ohne Fehlermeldungen durchläuft. Sobald der Merge Request genehmigt wird, kann auf den Dev-Branch gemerged werden.

Um eine aktuelle Version auf Dev zu finalisieren, kann über Gitlab ein Tag für diese Version erstellt werden. Dadurch wird automatisiert ein Merge Request dieses Tags auf Test geöffnet und die oben beschriebenen Schritte werden erneut von der Pipeline ausgeführt. Dabei werden die erstellten Artefakte mit der Version aus dem Tag gekennzeichnet. Auf dem Test Branch können dann Langzeit-Tests für diese Version durchgeführt werden.

Sobald die Ergebnisse der Langzeit-Tests zufriedenstellend sind, kann der Tag für die Production freigegeben werden. Dadurch läuft die Pipeline wieder an und schiebt alle Artefakte in den Production Artefaktspeicher sowie den Code auf den Production Branch. So wird sichergestellt, dass Release und Version des Codes immer zusammenpassen. Zuletzt können die Artefakte aus dem Artefaktspeicher heraus veröffentlicht werden.

Natürlich hat die Pipeline noch weitere Features. Um euch eine kurze Empfehlung zu geben, begrenzt sich dieser Artikel allerdings nur auf die dafür relevanten Hauptfeatures unserer Pipeline. Wenn Euch weitere Features interessieren, dürft Ihr uns gerne kontaktieren!

Pro

  • Zeitersparnis durch Automatisierung
  • konsistentes Testen und Code Quality Assurance
  •   Standardisierung und Übersichtlichkeit

Contra

  • Entwicklungsaufwand für die Pipeline
  •  Einarbeitung in neues Tool erforderlich
  •  Veränderung ist unbeliebt

Fazit

Trotz dem Aufwand, den wir erbringen mussten, um unsere Pipeline zu entwickeln, hat es sich definitiv gelohnt. Seit Einführung der Pipeline haben wir einen standardisierten Arbeits- und Entwicklungsworkflow, der den Einstieg in neue Projekte erleichtert und einen Überblick über diese verschafft. Durch die Automatisierung der zuvor noch monotonen und repetitiven Vorgänge im Entwicklungsprozess konnten wir eine enorme Zeitersparnis und Effizienzsteigerung erreichen.

Meine zusammengefasste Antwort auf die Frage "CI/CD Pipeline - Lohnt sich der Aufwand?" lautet somit eindeutig: JA!

 

Als Assistentin der Geschäftsleitung unterstütze ich die Geschäftsleitung bei täglichen administrativen Aufgaben und verantworte die strategische Ausrichtung unserer Finanz- und Planungsabteilung sowie unseres Marketing und Vertriebs. Im Fokus meiner Marketingtätigkeiten stehen die Betreuung der Online-Plattformen, das Employer Branding sowie vertriebsunterstützendes Marketing. Zudem schreibe ich ab und zu auch mal Posts und Artikel um die Community mit aktuellen News rund um dibuco auf dem Laufenden zu halten.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.