Nicht nur jeweils einer findet sich zurecht – Einfachere Wiederverwendung von Tools • Was? – Verzeichnisstruktur, Namenskonventionen – Nutzung von Tools: Composer, Modman, …
nicht notwendig (Alternativ: Git) - Keine externen Abhängigkeiten • Ohne Umstände lauffähig auf - Windows - Mac - Linux VM (Vagrant) • Prozesse für Frontend-Entwicklung berücksichtigt • Einfache Transition von bestehenden Projekten
zwischen Branches • Notwendigkeit von zusätzlichen Tools bei der Entwicklung minimieren • Kleine Änderungen durch Nicht-Entwickler ermöglichen: z.B. Modul installieren, Übersetzungen anpassen • KISS
neuen Instanz – Nach Update von Magento – Nach Update von Dev Dependencies • composer update {$vendor}/{$name} – Zum Update des angegebenen Moduls – Zur Installation des angegebenen Moduls • composer update ohne Parameter nur als separater Commit – Wichtig: Versionen in composer.json möglichst so angeben, dass nur Bugfix-Updates automatisch geschehen (z.B. “~1.1.3”). Bei Packages ohne Semantic Versioning konkreten Tag oder Commit angeben. Niemals “dev-master” oder “*”! https://getcomposer.org/doc/01-basic-usage.md#package-versions
update - Automatisch auf Server beim Deployment - Build Server - Git Hook - Optional automatisch mit PhpStorm File Watcher, oder Grunt Watcher • modman deploy {$module-directory} - Manuell lokal nach Änderung von modman Datei, wenn Effekt sichtbar sein soll (“deploy-all” hat unübersichtliche Ausgabe)
– etc Reserviert für Konfigurationsdateien, die nicht ins Hauptverzeichnis müssen – doc Reserviert für Dokumentation und Sonstiges – .modman Link auf src – shared media und var Verzeichnisse, local.xml – www Magento Core + Symlinks – vendor 3rd Party Packages (außer Magento Module) – var Lokale/temporäre Dateien • Dateien – composer.json – composer.lock – README.md }.gitignore
direkt dorthin • Composer Module sind im Projekt-Repository versioniert • Kein „modman link“ notwendig, nur „modman deploy-all“ • package.xml von Magento Connect Modulen kann in modman Datei konvertiert werden • Für Kaufmodule ohne modman-Datei wird sie selbst geschrieben src bin etc doc .modman shared www vendor var Symlink
Symlinks • Magento Core wird mit Composer hierher kopiert. • Nicht versioniert (wegen Symlinks) • Angepasste Dateien wie index.php, favicon.ico in Modulen pflegen und ebenfalls symlinken src bin etc doc .modman shared www vendor var
Deployment mit Build Server • Wichtig, damit composer install das bestehende Media Verzeichnis nicht überschreibt • Liegt idealerweise ganz außerhalb des Repositories • Symlinks auf Server: – shared/media => [release/current/]www/media – shared/local.xml => [release/current/]www/app/etc/local.xml – shared/var => [release/current/]www/var – Ggf. weitere Verzeichnisse z.B. für import/export src bin etc doc .modman shared www vendor var
Scripts: shared-links.php, build-artifact.sh, deploy-artifact.sh ... • Alle nicht projektspezifischen Skripte (außer composer.phar) in eigenem Repository verwalten und über Composer hier hinzufügen – Keine Symlinks, soll mit versioniert werden! • WIP: https://bitbucket.org/integer_net/magento-scripts src bin etc doc .modman shared www vendor var
• Reserviert für Dokumentation • (noch) nicht standardisiert src bin etc doc .modman shared www vendor var src bin etc doc .modman shared www vendor var
für kleine Projekte, Projekte mit sehr häufigen Änderungen und Testsysteme für Feature Branches - Git Hook startet modman & Environment Configurator - .git/hooks/post-merge - .git/hooks/post-checkout Bitbucket Server git pull git fetch && \ git checkout feature/to-test
große Projekte und Projekte mit hoher Verfügbarkeit build: run composer+modman create artifacts check: run static code analysis install: install dev artifacts on CI run env. configurator run integration tests deploy-staging: deploy prod artifacts run env. configurator deploy-live: deploy prod artifacts run env. configurator Bitbucket git pull Artifacts: www.tar.gz www-dev.tar.gz bin.tar.gz
Dev Module sind im Repository – auf staging/live: composer install --no-dev entfernt dev Module • Umstellung von Projekten ohne modman Original-Repository als Magento Core Repository verwenden nach und nach migrieren. • Abhängigkeit von externen Libraries in Magento vendor wird eigentlich nicht versioniert und nicht deployed Ausnahmen in vendor/.gitignore und Deploy-Skripts auf Build Server pflegen