So führen wir Magento 2 Versionsupdates durch
Bei CustomGento arbeiten wir täglich mit Magento 2 Shops. Um diese stabil, sicher und aktuell zu halten, führen wir regelmäßig Updates durch. Sicherheits-Patches sind dabei wichtig, aber manchmal braucht ein Shop ein vollständiges Versionsupdate.
Ein Upgrade von Magento 2.4.6 auf 2.4.9 zum Beispiel bringt in der Regel Verbesserungen bei der Leistung, neue Funktionen und Sicherheitsfixes mit sich. Gleichzeitig können solche Updates inkompatible Änderungen verursachen, die eigene Module, Themes und Drittanbieter-Erweiterungen betreffen.
Deshalb klicken wir nicht einfach auf “Update” und hoffen, dass alles gutgeht. Stattdessen folgen wir einem klar strukturierten Prozess, der uns hilft, genau solche Probleme zu vermeiden.
Hier ein Überblick, wie wir ein vollständiges Magento 2 Versionsupdate durchführen.
Vorbereitung
Bevor wir irgendetwas aktualisieren, stellen wir sicher, dass alles sauber vorbereitet ist. Eines der wichtigsten Tools, das wir bei Magento Updates einsetzen, ist die Magento 2 Upgrade GUI von elgentos. Diese muss auf unserem System vorhanden und einsatzbereit sein. Das Tool ermöglicht uns einen visuellen Drei-Wege-Vergleich zwischen der ursprünglichen Version, der neuen Version und unseren eigenen Preferences, Plugins und Template-Überschreibungen.
Außerdem klonen wir vorübergehend den Ampersand Upgrade Patch Helper ins Root-Verzeichnis des Projekts, da wir ihn nur für die Dauer des Upgrades brauchen. Dieses Tool hilft uns später dabei, herauszufinden, welche unserer Überschreibungen aufgrund der Änderungen in der neuen Magento Version angepasst werden müssen.
Das Magento Core Update
Nachdem die Grundlagen stehen, kann es mit dem eigentlichen Update losgehen.
Zunächst checken wir den Main Branch aus und führen composer install aus, damit unsere lokale Umgebung der Produktionsumgebung entspricht. Anschließend kopieren wir den aktuellen Vendor-Ordner, um ihn später mit der neuen Version vergleichen zu können.
Dann erstellen wir einen separaten Branch speziell für das Magento Versionsupdate. In der Root-composer.json prüfen wir, ob das magento/composer-root-update-plugin installiert und aktuell ist. Dieses Composer-Plugin ist essenziell, weil es die Änderungen in der composer.json während des Upgrades verwaltet.
Wenn alles vorbereitet ist, fordern wir die neue Magento Version über Composer an.
Manchmal haben unsere eigenen Module strenge Abhängigkeitsregeln, was zu Konflikten führen kann. In solchen Fällen entfernen wir die Abhängigkeiten temporär, führen das Upgrade durch, fügen die Abhängigkeiten anschließend einzeln wieder hinzu und testen sie. Dabei behalten wir immer mindestens eine ältere Version als Rückfalloption, um bei Bedarf auf einen funktionierenden Stand zurückkehren zu können.
Sobald das Upgrade abgeschlossen ist, aktualisieren wir die Magento Version in der composer.json manuell, führen composer update aus, um alle Minor-Updates einzuspielen, und prüfen mit composer outdated, ob es noch offene Versionsupdates gibt, die manuell behandelt werden müssen.
Wir gehen außerdem alle Drittanbieter-Erweiterungen mit begrenztem Update-Zeitraum durch. Da Composer diese nicht als veraltet anzeigt, vergleichen wir die installierte Version mit der aktuellen Version auf der Produktseite des Anbieters. Falls der Update-Zeitraum abgelaufen ist und ein relevantes Update vorliegt, sprechen wir mit dem Kunden über eine Verlängerung der Lizenz.
Anschließend vergleichen wir den alten und neuen Vendor-Ordner, um eine Diff-Datei zu erzeugen. Mit dem Ampersand Patch Helper analysieren wir den Diff und generieren eine Classmap, die für die Magento 2 Upgrade GUI benötigt wird. So sehen wir genau, wo wir eigene Überschreibungen anpassen oder entfernen müssen.
Überprüfung von Überschreibungen und Abhängigkeiten
Mithilfe der GUI überprüfen wir alle relevanten Dateien. Dazu gehören Theme-Dateien, E-Mail-Vorlagen und alle PHTML-Dateien, die mit einem “based on”-Kommentar versehen sind. Dieser Kommentar zeigt an, dass die Datei auf einer Magento Core-Datei basiert.
Danach führen wir composer audit aus und prüfen, ob zuvor ignorierte Audit-Meldungen nun aus der Root-composer.json entfernt werden können.
Wenn das Update so gut wie abgeschlossen ist, führen wir die üblichen Befehle aus: setup:upgrade, setup:di:compile und setup:static-content:deploy, um sicherzustellen, dass alles korrekt kompiliert und gebaut wird.
Abschließend prüfen wir, ob das Update unsere .gitignore verändert hat. Falls ja, passen wir sie manuell an, damit wir nicht versehentlich Dateien committen, die nicht ins Repository gehören. Auch die Test-Konfigurationsdateien, wie zum Beispiel die projektspezifischen PHPUnit-XML-Configs, müssen mit den neuen Basisdateien verglichen und bei Bedarf angepasst werden.
Außerdem aktualisieren wir alle Node-Pakete im Projekt – dabei ist zu beachten, dass es mehrere package.json-Dateien geben kann, zum Beispiel im Stammverzeichnis und in den Theme-Verzeichnissen.
Sobald alles durchläuft, erstellen wir einen Pull Request, der das komplette Update enthält – das Magento Core Update sowie alle Updates der Erweiterungen und Abhängigkeiten.
Tests
Bevor wir das Upgrade als abgeschlossen betrachten, testen wir den Shop gründlich. Dazu gehört eine Testbestellung, das Testen von Account-Erstellung und Login sowie das Durchgehen aller wichtigen Seitentypen: Startseite, Kategorieseiten, Produktseiten, Warenkorb, Checkout, CMS-Seiten und das Impressum. Dabei vergleichen wir jede Seite zwischen dem Live-Shop und der lokalen Umgebung, um visuelle oder funktionale Unterschiede zu erkennen.
Falls das Projekt eine eigene Test-Checkliste hat, arbeiten wir auch diese ab. Außerdem prüfen wir den Code statisch mit PHPStan, PHP_CodeSniffer auf Basis des Magento Coding Standards und dem Yireo Extension Checker, der sicherstellt, dass unsere eigenen Module alle ihre Abhängigkeiten korrekt angeben. Zusätzlich lassen wir die automatisierten Test-Suites laufen – Unit Tests, Integrationstests und End-to-End-Tests mit MFTF, Cypress oder Playwright – bevor das Update in den Code-Review geht.
Letzte Schritte nach dem Rollout
Nach dem Rollout auf den Shop aktualisieren wir die Varnish-Konfiguration.
Abschließend räumen wir auf und entfernen alle temporären Dateien und Ordner, die nur für das Upgrade benötigt wurden, wie den Ampersand Patch Helper und den kopierten Vendor-Ordner.
Warum das wichtig ist
Bei einem Magento Upgrade geht es nicht nur um die neueste Version, sondern darum, den Shop gesund, sicher und zukunftsfähig zu halten. Mit unserem strukturierten Prozess stellen wir sicher, dass jedes Update reibungslos ausgerollt wird, ohne bestehende Funktionalität zu beeinträchtigen.
Dabei machen wir längst nicht mehr alles von Hand. Viele Schritte übernimmt inzwischen KI, zum Beispiel das Aktualisieren von Drittanbieter-Erweiterungen auf die neueste Version, das Wiederherstellen der Abhängigkeiten unserer eigenen Module und das Anpassen unserer Überschreibungen an die Änderungen der neuen Magento Version. Einer unserer Entwickler prüft jede Änderung, und alles, was eine Abwägung erfordert, wie das Lösen von Konflikten oder das Testen des Shops, bleibt in menschlicher Hand.
Sie betreiben einen Magento 2 Shop und überlegen, wann oder wie ein Upgrade sinnvoll wäre? Sprechen Sie uns gerne an – wir helfen Ihnen weiter.
