Git und Shopware

Hallo,

ich hab da mal ne grundsätzliche Frage. Wie macht ihr das mit Git. Nur das Theme Verzeichnis oder komplett.

Ich hab einen installation lokal und eine live.

Wenn ich jetzt ein neues plugin benötige, installier ich das lokal, teste es und schieb es dann hoch. Jetzt hab ich die aktuellen Dateien auf meinem Server aber irgendwelche Datenbankänderungen werden ja nicht übermittelt, also muß ich auf dem Produktionssystem auch nochmal das Plugin installieren.

Das kann ja nicht ganz richtig sein. Wie macht man so was richtig?

Danke vorab.

Wofür brauchst Du Git?

z.B. zum hochladen auf den Produktionsserver

@schnickschnack schrieb:

z.B. zum hochladen auf den Produktionsserver

ich mache das mit Rsync. Hast Du Git auf dem Produktivserver?! 

ja hab ich, aber auch mit rsync hab ich das selbe Problem wie oben beschrieben

Es ist kein Problem, es ist Realität. Shopware und Plugins installieren. Medien sichern. Themes und eigene Plugins im Git halten. Auf Knopfdruck geht leider nichts. 

ja wie auch immer, hilft aber nicht weiter. Mir gehts um die beste Vorgehensweise oder einfach wie es andere machen.

@schnickschnack schrieb:

ja wie auch immer, hilft aber nicht weiter. Mir gehts um die beste Vorgehensweise oder einfach wie es andere machen.

da oben stehts doch.  

geht ja nicht darum wie ich dateien synchronisiere…

“Wenn ich jetzt ein neues plugin benötige, installier ich das lokal, teste es und schieb es dann hoch. Jetzt hab ich die aktuellen Dateien auf meinem Server aber irgendwelche Datenbankänderungen werden ja nicht übermittelt, also muß ich auf dem Produktionssystem auch nochmal das Plugin installieren.”

sonder eher darum

Oben steht auch “Plugins installieren”

OK

Hi schnickschnack,

diese Frage wurde hier schon öfter gestellt 

  1. Wie kann ich Shopware per git deployen (staging/live)? (dort habe ich auch ich einen Vorschlag gemacht. Klicke hier)
  2. Frage ProjektSetup (Git, Vagrant, Local, Remote, Production)
  3. Shopware lokal und remote entwickeln?
  4. Deployment von lokal PC nach Live-Server: Wie ist der Workflow?

und noch viele mehr. Einfach mal googeln :wink:

Viele Grüße

Danke für deine Antwort. Soweit war mir davon vieles bekannt.

Mein eigentliches Problem ist aber folgendes:

Ich installiere ein Plugin lokal, das ändert etwas an der Datenbank oder fügt eigene Tabellen ein. 
Jetzt schieb ich alles auf den live Server, habe die neuen plugin Dateine dann zwar drin aber nicht die Datenbankänderungen, dh ich muß das Plugin auch nochmal auf dem live Server installieren.

Git es da eventuell eine bessere Vorgehensweise um Änderungen an der DB hochzuladen? Einen sqldump einspielen funktioniert ja so nicht, weil ich ja die live daten überschreiben würde.

Du könntest nach dem Deployment versuchen einfach alle Plugins zu installieren / aktivieren

ja das mach ich ja, nochmal auf dem live system installieren aber gibt es eine besser Vorgehensweise?

Bei Laravel gibts z.B migrations 

Dass man die Datenbank nicht synchronisieren kann/sollte, sind wir uns einig, oder? (Man stelle sich Sync-Konfilkte im Liveshop vor/ Dateninkositenzen)

Bei Laravel gibts z.B migrations 

Die  gibt es in Shopware auch. Werden allerdings vom Update-Skript verwendet. Du könntest dir selbst ein Plugin schreiben und dann dort Migrations pflegen. Dann muss du aber alle Plugineinstellungen / Änderungen als SQL Statements schreiben. Problematisch: Wenn der Liveshop weitere Sub-/Sprachshops enthält und dein Dev-System nicht. 
M.m.n. nicht wirklich praktikabel. Außer für Datenbanktabellenänderungen.

Du könntest dir zum Beispiel ein Deployment-Skript schreiben. Welches auf dem Liveserver Plugins installiert, Einstellungen setzt etc.

Plugins installieren & Einstellungen synchronisieren

Dazu siehst du dir am besten das Shopware-CLI an. http://community.shopware.com/Shopware-CLI-Nützliche-Befehle--Tricks\_detail\_1990.html

Es gibt Befehle um Plugins zu installieren, aktivieren, Einstellungen zu setzen.

Themes synchronisieren

Dafür könntest du das von mir geschriebene Plugin verwenden *hust* *Schleichwerbung*. GitHub - simkli/SimklThemeSettingExport: This plugin allows you to import or export theme configurations in Shopware 5.
Damit kannst du ebenfalls automatisiert über das CLI, die kompletten Theme-Einstellungen ex- und importieren

Einkaufswelten

Zuletzt kommt mit Shopware 5.3 die Möglichkeit hinzu, auch Einkaufswelten zu ex- und importieren. Auch hier gibt es CLI-Kommandos.

Fazit

Mit etwas Mühe lässt sich schnell ein einfaches Skript für das Deployment schreiben.

#! /bin/bash                                                                            
                             
#1.1 Theme Konfiguration exportieren 
./bin/console sw:theme:export:configuration Responsive English > my_config.theme

#1.2. ab sw5.3 hier Einkaufswelten exportieren

#1.3 Mit z.B. rsync alle relevanten Dateien hochladen

#2. Auf dem Server (ssh keys etc. sollten konfiguriert sein)

ssh server << EOF   

 #2.1 Auf dem Server Plugins installieren und Einstellungen setzen
 php /htdocs/shop/bin/console sw:plugin:install --activate DeinPlugin
 php /htdocs/shop/bin/console sw:plugin:config:set DeinPlugin configFeld configValue

 # evtl. Plugins aktualiseren (hier kannst du auch Migrations in deinem Plugin definieren!)
 php /htdocs/shop/bin/console sw:plugin:update DeinPlugin2


 #2.2 Theme Konfig importieren 
 php /htdocs/shop/bin/console sw:theme:import:configuration Responsive English < my_config.theme

 #2.3. Ab SW5.3 ggf. Einkaufswelten importieren

 # 2.4 automatisiert cache leeren                                                             
 rm -r /htdocs/shop/var/cache/prod*

 # 2.5 theme cache generieren
 php /htdocs/shop/bin/console sw:theme:cache:generate                
EOF                                                                             

Viele Grüße

Ja, so wirklich komfortabel ist das alles nicht.

Wir installieren das Plugin aktuell per Hand im Live System nach dem Deployment und nehmen dann dort auch die Einstellungen vor. Wir haben in unserem Jira ein Feld „Deplyoment Instructions“. Dort tragen wir alle Dinge ein, die von Hand vom Deployer vorgenommen werden müssen.

Automatische Migrations wären toll. Aber wie simkli schon schreibt, müsste man sich sowas selber basteln. Ich denke die Shopware CLI gibt einem schon alles was man dafür braucht.