Update Prozesse vereinfachen. Website CMS Updates sind ein notwendiges Muss. Um den Prozess des Updatens zu vereinfachen, sicherer und schneller zu machen, haben wir auf einen Composer-basierten Workflow umgestellt.
Die aktuell 13 Websites von DE-PACK aktuell zu halten, ist eine größere Aufgabe, die normalerweise viel Zeit verschlingt. Um den Kunden nicht unnötig mit "nicht-produktiven" Stunden zu belasten, haben wir den Vorgang stark überarbeitet und halb-automatisiert.
Nicht-produktiv bedeutet in diesem Falle, dass hier keine Tätigkeiten aus dem Bereich SEO, Beratung oder Google-Ads anfallen, sondern eher für uns werksfremde Tätigkeiten wie technische Realisation und Umsetzung von Hosting-individuellen Lösungen.
Es existieren zwar eine Reihe von Update-Services für Drupal-Websites, aber diese gehen auf die Abhängigkeiten der in Drupal enthaltenen PHP-Projekte nicht weiter ein, sondern ersetzen praktisch nur den "Core" durch die aktuelle Version. Dies führt früher oder später zu Problemen, da die abhängigen Projekte im Vendor-Verzeichnis evt. nicht mehr funktionieren, wenn sie nicht ebenfalls in passender Version bereitgestellt werden.
Daher haben wir lange überlegt und probiert, um einen narrensicheren Workflow für diesen Vorgang zu entwickeln. Im Grunde sieht die Lösung vor, daß die Website lokal bei uns auf dem NAS läuft und mit der Online-Version abgeglichen wird. Da die Websites online von Mitarbeitern von DE-PACK ständig redaktionell bearbeitet werden, muß man zu Beginn des Workflows einen aktuellen Datenbank-Abzug der Website runterladen (ca. 5 min.) und diesen für die lokale Installation bereitstellen.
Es ist mit Drupal auch möglich, eine komplette Trennung zwischen "redaktionellen Inhalten" und den Konfigurationen für Views, Nodes, etc. hinzubekommen. In der Praxis erwies sich dies aber als nicht immer fehlerfrei, zumal es sich auch um keine Neu-Installationen handelte, bei denen man die Umstellung auf "Speichere Konfigurationen nicht in der Datenbank sondern in Dateien" nicht so einfach durchführen konnte.
Mittels Composer / Composercat wird die lokale Website mit 1 Befehl innerhalb weniger Minuten aktualisiert, dann in github eingecheckt (ohne das verwendete Theme, ohne Module, ohne Dateien im files-Verzeichnis) und von dort via Webhook ein "git pull" vom Webserver durchgeführt, der im Anschluß ein Deployment-Script (Bash) aufruft, das im Grunde "composer install" und ein paar andere Dinge durchführt.
Der Versionsstand aller Module und sonstigen Bestandteile der Drupal-Installation wird in composer.json notiert und in composer.lock festgehalten.
Überträgt man nun composer.lock auf eine Kopie der Website (wie hier geschehen), stellt der Befehl "composer install" alle Module etc. anhand der Versionsnummern in der Datei composer.lock wieder her.
Daher ist es also nicht notwendig, Contrib-Module und viele andere Dinge, z.B. Drupal-Core selbst, einzuchecken und zu übertragen. Diese werden auf dem Server einfach runtergeladen und in der richtigen Version laut composer.lock installiert.
Wir arbeiten momentan daran, das Deployment-Script noch weiter zu verbessern und auch weitere Dinge zu automatisieren. Z.B. könnte ein Cron-Job jede Nacht um 00:00 Uhr einen aktuellen DB-Abzug aller Websites in einem Verzeichnis des Webservers bereitstellen, von dem aus dann mit einem lokalen Script die Dateien übertragen werden, so daß das manuelle Sichern der DB entfällt.
Es handelt sich hierbei um diese 13 Websites:
- de-pack.de
- epp-verpackungen.de
- eps-verpackungen.de
- fixier-verpackung.de
- gefache-verpackungen.de
- hkp-verpackung.de
- klt-vda.com
- klt-vda.de
- membran-verpackung.de
- reinpapier.de
- schaum-verpackung.de
- tiefzieh-verpackungen.de
- verpackungen.de