Bei der Arbeit an Shopware Projekten als E-Commerce Agentur braucht es viel mehr, als «nur» das Schreiben von Code. Das sind vor allem Themen rund um Infrastruktur, lokale Setups sowie klare Prozesse zur Zusammenarbeit. Eines meiner Lieblingsthemen sind sogenannte Pipelines.
Eine Pipeline im DevOps Bereich sind Tools und Prozesse, die beim «builden» und «deployen» von Code in eine Produktivumgebung unterstützen und diese Arbeiten automatisieren.
Ein klassisches Beispiel dafür ist das Deployment von Code aus einem Git Repository auf eine produktive Instanz. Dazu muss in der Shopware Welt mittels composer sämtliche Abhängigkeiten und Store Plugins geladen und installiert werden, es werden umgebungsspezifische Variabeln eingefügt (z.B. Payment ID’s und Secrets) und das Front- und Backend wird gebaut. Auch führen wir automatisierte Tests durch und deployen dann alles automatisiert auf den Live Server und führen Clean-ups durch.
Tönt kompliziert? Das Gegenteil ist der Fall, denn die Alternative ist, diese Prozesse bei jedem Kunden und bei jeder Änderung von Hand zu machen. Wo früher noch häufiger Code Änderung einfach mittels FTP auf den Live Server kopiert wurden, sind solche manuellen Prozesse heutzutage für ein professionelles Arbeiten undenkbar. Zu viele Fehlerquellen, speziell wenn unterschiedliche Personen auf einem Projekt arbeiten.
Jedes unserer Shopware Projekte hat etwa 10 Pipelines, die wir standardmässig im Einsatz haben. Drei davon möchte ich näher vorstellen. Unsere Pipelines setzen wir jeweils in Buddy auf. Buddy ist eine DevOps Automation Platform. Solche Pipelines können aber in vielen gängigen Tools eingerichtet werden (z.B. Github Actions, Gitlab, AWS DevOps, etc.).
Get production DB
Diese Pipeline ist eine der am häufigsten verwendeten Pipelines. Diese Pipeline generiert einen Datenbank Dump der Live Datenbank (DSGVO-compliant, dh. ohne Kundendaten, Bestellungen der sonstige sensiblen Daten) und legt diese im Filesystem der Pipeline ab, die dann mit einem Knopf lokal heruntergeladen werden kann. Damit ist das Onboarding für neue Entwickler auf ein Projekt in 5 Minuten erledigt und wirklich jeder Kunde von uns hat eine solche Pipeline, dh. der Prozess ist immer gleich.
Create test environment
Für unsere Plugins, die wir auch im Shopware Store vertreiben, haben wir eine Pipeline, die bei jedem neuen Push in den Develop Branch aus dem Git Repository direkt eine neue Shopware Instanz mit dem neuen Plugin Code startet. So kann nach einer Codeänderung an einem Plugin das Plugin selbst direkt in einer frischen Shopware Instanz getestet werden, ohne dass manuell eine Umgebung dafür erstellt werden muss.
Cypress E2E Tests
Diese Pipeline ist wirklich cool! Für jeden neuen Pull Request holen wir uns die bereinigte Live DB, starten eine Shopware Instanz in der Pipeline mit dieser DB und lassen verschiedene Cypress Tests laufen. Diese Cypress Tests testen für unsere Kunden und deren Shops automatisiert die wichtigsten Prozesse: Produktdetailseite öffnen, Produkt in den Warenkorb legen, Produkt bestellen, etc. Schlägt ein Test fehl, ist ein «Merge» und damit ein Release nicht möglich.
Diese drei Pipelines sind nur ein kleiner Ausschnitt dessen, was möglich ist. Jedes Mal, wenn ich einen Prozess rund um unsere Infrastruktur oder allgemein im DevOps-Bereich ein zweites Mal in die Hand nehme, erstelle ich eine Pipeline. Das automatisiert die Arbeit in der Zukunft und ist gleichzeitig eine tolle Dokumentation, was genau zu tun ist.
Deshalb liebe ich Pipelines! 🙂
Kommentare (0)
Hinterlasse einen Kommentar