Wie kann ich Shopware per git deployen (staging/live)?

Hallo,

Ich bin neu bei Shopware - hoffentlich also keine DAU Frage.

  • Ich möchte den Quellcode komplett in git haben, somit arbeiten im Team einfacher, jeder arbeitet lokal
  • Die Entwickler entwickeln lokal, testen commiten, alles läuft in develop branch zusammen
  • Staging Server
    • Eigener Server vollkommen getrennt von produktiv
    • Die Docroot ist ein GIT-Klone - das update also nur ein “git pull” des develop branches am Server
  • Nach Testen am Staging Server --> develop wird nach master gemerged
  • LIVE Server
    • Docroot ist ein git Klone des master branches
    • Das Update nur ein “git pull” des master branches

Meine Fragen:

  • Wie geht das am besten mit Plugins?
    • Eigene oder Fremde
    • Was muss ich zusätzlich beachten?
    • Muss ich das Plugin dann trotzdem auf allen Servern (staging, live) nochmal installieren/aktivieren?
    • Wie kommen Änderungen, die die Plugins am DB-Schema oder den DB-Daten machen auf alle Server?
  • Gibt es Beispiele? Hat das schon mal jemand so gemacht? Was setze ich am besten auf die .gitignore Liste? Es wäre dann wohl alles (auch vendor Verzeichnis) im Git
  • Das themes Verzeichnis, denke ich, wäre dann kein Problem, da es über den git pull auf alle Systeme kommt.
  • Wäre auch ein Shopware Versionsupdate so machbar (also lokal updaten --> git commit --> git pull auf staging/live)?
  • Das Problem mit der “Domain”/Lizenz würde ich jetzt mal aussen vor lassen, muss man wohl in diesem Fall mit Workarounds lösen.

 

Vielleicht kann mir jemand weiterhelfen.

 

Danke & schöne Grüße

Siegi

 

So jetzt habe ich bei den Fragen noch was vergessen:

* Wie könnte man Shop Konfigurationen (z.B. Freitextfelder) über verschiedene Systeme hinweg syncen?

Ich würde in Git nur Sachen packen die Du entwickelst. Also Dein Theme und ggf. Deine Plugins.

Fremd-Plugins, Core etc. nicht. Diese Sachen kommen Original und sollten auch so bleiben.

Die Shopkinfiguration musst Du auf der Datenbank-Ebene syncen.

Danke für die Info.

Aber wie sieht das Deployment über verschiedene „Server“ hinweg aus? Gibt es da Best-Practice Beispiele/Wege?

(Also lokaler Server zum Entwickeln, zumindest ein Staging/Testserver für Integration und Testing, ein Live-Server)

@siegfried_zach schrieb:

Danke für die Info.

Aber wie sieht das Deployment über verschiedene „Server“ hinweg aus? Gibt es da Best-Practice Beispiele/Wege?

(Also lokaler Server zum Entwickeln, zumindest ein Staging/Testserver für Integration und Testing, ein Live-Server)

Ich zumindest rsynce (mit Löschen) Themes oder Plugins dev–>stage und dann dev–>prod 

@NextMike schrieb:

Ich würde in Git nur Sachen packen die Du entwickelst. Also Dein Theme und ggf. Deine Plugins.

Fremd-Plugins, Core etc. nicht. Diese Sachen kommen Original und sollten auch so bleiben.

Die Shopkinfiguration musst Du auf der Datenbank-Ebene syncen.

+1 . Löse ich aktuell auch so. Mit dem neuen Plugin-System wird es evtl. etwas „eklig“, da du Drittanbieterplugins immer auf die gitignore setzen musst.  Hier wird es mal Zeit, dass man Eigenentwicklungen wieder woanders ablegen kann. (z.B. über die config.php mehrere Plugins-Dirs angeben, welche der Plugin Manager einbezieht.)

Die komplette Shopware Installation zu versionieren halte ich für nicht besonders praktikabel. Das bläht die Repo auf, der Kunde kann nicht einfach den Plugin-Manager benutzen ohne, dass es zu Konfilkten kommt, etc. pp.)

@siegfried_zach schrieb:

Hallo,

Ich bin neu bei Shopware - hoffentlich also keine DAU Frage.

  • Ich möchte den Quellcode komplett in git haben, somit arbeiten im Team einfacher, jeder arbeitet lokal
  • Die Entwickler entwickeln lokal, testen commiten, alles läuft in develop branch zusammen
  • Staging Server
  • Eigener Server vollkommen getrennt von produktiv
  • Die Docroot ist ein GIT-Klone - das update also nur ein „git pull“ des develop branches am Server
  • Nach Testen am Staging Server –> develop wird nach master gemerged
  • LIVE Server
  • Docroot ist ein git Klone des master branches
  • Das Update nur ein „git pull“ des master branches

Meine Fragen:

  • Wie geht das am besten mit Plugins?
  • Eigene oder Fremde
  • Was muss ich zusätzlich beachten?
  • Muss ich das Plugin dann trotzdem auf allen Servern (staging, live) nochmal installieren/aktivieren?
  • Wie kommen Änderungen, die die Plugins am DB-Schema oder den DB-Daten machen auf alle Server?
  • Gibt es Beispiele? Hat das schon mal jemand so gemacht? Was setze ich am besten auf die .gitignore Liste? Es wäre dann wohl alles (auch vendor Verzeichnis) im Git
  • Das themes Verzeichnis, denke ich, wäre dann kein Problem, da es über den git pull auf alle Systeme kommt.
  • Wäre auch ein Shopware Versionsupdate so machbar (also lokal updaten –> git commit –> git pull auf staging/live)?
  • Das Problem mit der „Domain“/Lizenz würde ich jetzt mal aussen vor lassen, muss man wohl in diesem Fall mit Workarounds lösen.

 

Vielleicht kann mir jemand weiterhelfen.

 

Danke & schöne Grüße

Siegi

 

Wir bauen immer ein komplettes Release mit allen Dateien. Nur die Ordner Media & Files haben in einem Shared Ordner gesymlinked und sind auch nicht im Repository. Nach dem das Release fertig ist setzen wir den Symlink von var/www/shop/web –> releasealt auf var/www/shop/web –> releaseneu. Rollback dann einfach symlink ändern.

Mit Shopware Deployment haben wir in den letzten Monaten sehr viel probiert. Wirkliche Best Practice Lösungen gibt es nicht. Schau mal hier: Deployment von lokal PC nach Live-Server: Wie ist der Workflow? - #2 von Misengo - Installation/Einstieg - Shopware Community Forum?