Setup-Skripte in Magento
Setup-Skripte in Magento
Benjamin Wunderlich
@bwunderlich [email protected]
18. Magento-Stammtisch Hamburg25.06.2014
Motivation
● Datei-Deployments: svn, Git, FTP :)
● Datenbank-Deployments: Setup-Skripte
– Datenbank-Tabellen
– Entities / Attribute
– CMS-Elemente
– Systemkonfiguration
– usw.
18. Magento-Stammtisch Hamburg25.06.2014
Setup-Skripte
● Teil eines Moduls
● Abhängig von der Modulversion
● Install-Scripte für Erstinstallation des Moduls
● Upgrade-Scripte für Modul-Updates
● Mysql: Datenbank-Strukturen anlegen
● Data: Daten hinzufügen
– ab Magento 1.6: eigener Ordner● Eigene Setup-Klassen möglich, Core-Standard:
– Mage_Core_Model_Resource_Setup
– Mage_Eav_Model_Entity_Setup
18. Magento-Stammtisch Hamburg25.06.2014
Beispiel
18. Magento-Stammtisch Hamburg25.06.2014
Funktionsweise
● Installationsvorgang von Config-Cache abhängig
● Aktuelle Versionsnummern: DB-Tabelle core_resource
● Ausführung im Frontend und Backend
● Keine Ausführung durch Cronjob, kein manuelles Anstoßen möglich
18. Magento-Stammtisch Hamburg25.06.2014
Funktionsweise II
● Prüfen auf neue Module → Install-Scripte + Upgrade-Scripte ausführen
● Prüfen auf Modul-Updates → Upgrade-Scripte ausführen
● Lücken in Versionen werden übersprungen
● Multiple Install-Scripte: Letztes Install-Script verwenden und Upgrades ausführen
0.1.0
I
UU U0.1.1 0.3.00.2.0 0.4.0
I0.5.0
U U0.6.0
18. Magento-Stammtisch Hamburg25.06.2014
Best Practice Shopwerft
● Setup-Modul im Shop
– Startkonfiguration setzen
– Modul unabhängige Konfigurationen● Versionierung nach Datum
z.B. mysql4-upgrade-2014.06.25.0-2014.06.25.1.php
● Idempotenz (Mehrfachausführung): f(f(x)) = f(x)
18. Magento-Stammtisch Hamburg25.06.2014
Probleme
● Sehr programmierlastig, nicht deskriptiv (z.B. XML)
● Bei aktivem Config-Cache nicht atomar
● Jeder Nutzer führt Install-/Upgrade-Scripte aus
● Ggf. parallele Mehrfachausführung (→ Idempotenz!)
● Fehlerhafte Skripte schießen Shop ab (Frontend!)
● Gleichzeitige Setup-Skripte mehrerer Entwickler
● Deployment-Reihenfolge ist wichtig06.01
UU U06.02 06.0406.03 06.05
I06.06
U U06.07
2. 1.
18. Magento-Stammtisch Hamburg25.06.2014
Vorteile
● Höhere Konsistenz in mehreren Systemen (dev, staging, live)
● Chronologische Dokumentation von Änderungen über VCS (z.B. Git)
● Kein Vergessen von Konfigurationsänderungen in Launch-Prozessen
● Verkürzung von Deployments
● Verbesserte Modularität
18. Magento-Stammtisch Hamburg25.06.2014
Ressourcen● Magento Knowledge Base
http://www.magentocommerce.com/knowledge-base/entry/magento-for-dev-part-6-magento-setup-resources
● Webguys-Blogpost (Bastian Ike)http://www.webguys.de/magento/adventskalender/turchen-23-installscripte-in-magento/
● Inchoo-Bloghttp://inchoo.net/ecommerce/magento/magento-install-install-upgrade-data-and-data-upgrade-scripts/
Viel Spaß!