Shopware Deployment mit Capistrano/Capifony?

Hallo Forum, leider finde ich weder hier im Forum noch im Netz hilfreiche Informationen zum Thema Deployment von Shopware mittels Capistrano. Da wir bei uns in der Agentur schon recht lange alle Projekte mit Capistrano deployen, würde ich natürlich gerne auch unser erstes Shopware-Projekt unter Verwendung von Capistrano auf unterschiedliche Umgebungen deployen. Bin ich mit Capistrano generell auf dem falschen Dampfer? Wenn nicht, wäre ich über ein “Rezept” oder weiterführende Infos dankbar. /burn

Also ich deploye bspw. mit Envoyer. Dann gibts natürlich auch andere Services wie http://deploybot.com/ usw. Oder eben direkt ein eigenes Deployment bauen. Mit Capistrano habe ich allerdings keine Erfahrungen. Sieht auf den ersten Blick auch nicht wirklich Nutzerfreundlich aus. Bei mir ist es dann so: privates Git Repo -> commiten & pushen -> Envoyer holt sich automatisch die Änderungen aus dem Git Repo und aktualisiert alles auf dem Live-Server ohne Downtime.

Ich deploye mit Capifony, ist allerdings noch nicht lange im Einsatz, so dass ich noch wenig Erfahrungswerte nennen kann. Prinzipiell will ich aber eh auf Capistrano 3 umsteigen… vielleicht mach ich das die Tage mal und dokumentier es so, dass ich es veröffentlichen kann :wink: Prinzipiell bin ich über folgende Punkte gestolpert: - die GIT-Version von Shopware enthält keine Versions-Info, daher muss die manuell eingetragen werden (vgl. http://snajdr.de/setting-up-shopware-from-github/) - wie Datenbank-Migrations etc. angestossen werden, steht in https://github.com/shopware/shopware/bl … rt-hacking - der FPM muss von Capistrano neu geladen werden, sonst wird wild durcheinander aus neuem und altem Release zugegriffen (siehe z.B. https://github.com/hooktstudios/capistr … php-fpm.rb, /etc/sudoers muss dafür angepasst werden) - neben den üblichen Verdächtigen config.php, sw-domain-hash.html, media, logs, files setze ich auch engine/Shopware/Plugins/Community auf shared, damit ich Community-Plugins aus dem Store nicht auch in meinem GIT-Repo halten muss (das war problematisch). Allerdings gibt es dann Probleme mit dem Smarty {link} Plugin, vgl. meinen Pull Request https://github.com/shopware/shopware/pull/304 Alternativ dachte ich daran, engine/Shopware/Plugins/Community jeweils aus dem Vorgänger-Release zu kopieren (ähnlich wie Capifony es mit dem vendors-Verzeichnis machen kann) - das initiale Deployment habe ich bislang von Hand gemacht … das steht noch auf meiner Todo-Liste für Cap (DB-Initialisierung ohne Demo-Daten, aber mit Anlegen eines Backend-Users etc.) Grüße, Sven

Hallo in die Runde, zunächst danke für die ersten Infos/Anregungen. Wir haben nun einen Weg zum Deploy via Capistrano2 gefunden. Letztlich war die Lösung, einige Aufgaben (tasks) vor dem deploy:update auszuführen und zusätzlich nach dem deploy:update weitere Aufgaben zu erledigen. Die tasks im Einzelnen: before "deploy:update", "deploy:shopware\_install" after "deploy:update", "deploy:shopware\_fix\_permissions", "deploy:shopware\_create\_config\_symlinks", "deploy:shopware\_delete\_unwanted\_files", "deploy:shopware\_run\_composer", "deploy:cleanup" namespace :deploy do task :shopware\_install do desc "install shopware using git" run "git clone https://github.com/shopware/shopware.git #{release\_path}/public/" end task :shopware\_fix\_permissions do desc "fix shopware permissions" run "chmod 750 #{release\_path} #{release\_path}/public/ #{release\_path}/public/themes/ #{release\_path}/public/themes/Frontend/" end task :shopware\_create\_config\_symlinks do desc "create shopware symlinks" # remove original .htaccess and symlink to config file run "rm #{latest\_release}/public/.htaccess" run "ln --symbolic #{shared\_path}/config/htaccess\_env #{latest\_release}/public/.htaccess" # symlink config config.php run "ln --symbolic #{shared\_path}/config/config\_env.php #{latest\_release}/public/config.php" # remove original and symlink shared media directory run "rm -rf #{latest\_release}/public/media" run "ln --symbolic #{shared\_path}/content/media #{latest\_release}/public/media" end task :shopware\_delete\_unwanted\_files do desc "delete unwanted shopware files (e.g. installer files)" run "rm -rf #{latest\_release}/public/recovery/install" end task :shopware\_run\_composer do run "php /path/to/composer.phar install --working-dir #{current\_path}/public/" end end Wer Interesse an unserem Setup und unserer deploy.rb hat, kann gerne eine PM an mich senden. Da meine in diesem Thread gestellte Frage für mich geklärt ist, setze ich den Thread auf gelöst. Nochmals danke in die Runde und reingehau’n, /burn

1 Like