Deployment von lokal PC nach Live-Server: Wie ist der Workflow?

Moin

Gibt es eine Dokumentation dazu wie das Deployment von einem System z.B lokale Development Umgebung über GIT zu einer anderen Umgebung z.B. Live-Server von statten zu gehen hat?
Die Aussage nur Sachen ins GIT zu packen die man ändert ist mir ein wenig zu dürftig muss ich sagen.
Ich benötige genaue Angaben darüber welche Ordner per .gitignore nicht ins Repo sollen und welche nicht.
Außerdem würde ich gerne wissen in welchen Ordnern sich Änderungen im Backend auswirken können z.B. wenn man Bilder hinzufügt oder so.
Welche Ordner gehören quasi zum Core von Shopware?
Gehe ich richtig davon aus, dass der Workflow so ist, dass man auf dem Live-Server auf den ich später aus dem GIT Repo deployen möchte, zuerst Shopware installieren muss und dann in das Shopware-Verzeichnis mein git clone Befehl ausführen soll (ich glaub da meckert git rum und meint, dass der Ordner nicht leer ist). Warum soll shopware nicht mit ins Repo rein?
Ich kenne das aus meiner bisherigen Laufbahn (nicht shopware-projekte) so, dass man das komplette Projekt ausscheckt, den DB-Dump imortiert und dann läuft es direkt. Ok, vielleicht muss man noch die Berechtigungen korrekt setzen und anstoßen, dass Bilder in verschiedenen Größen erzeugt werden. Aber das wars dann auch schon. Sind also nur 2-3 Befehle und gut ist…

Was ist bei den Plugins zu beachten?
In welchem Ordner liegen diese und warum sollen die nicht in das GIT rein? Oder doch rein?
Was wenn diese noch andere Ordner erzeugen und davon abhängig sind? Oder speichern die Plugins ihre Einstellungen außschließlich in der DB?
Wie ist der deployment Workflow damit gedacht? Soll man alle Plugins auf dem Live-Server erneut installieren? Erscheint mir etwas umständlich…

Wie werden die Bilder von Shopware gehandlet die man einem Artikel zuweißt? In welchem Ordner werden die original Bilder Abgelegt und wann werden die Bilder in verschiedenen Größen skaliert und abgelegt?
Ich habe gesehen, dass es einen media ordner gibt in dem shopware viele unterordner erzeugt mit Bildern unterschiedlicher Größe z.B. media/image/13 etc. Die sollen alle nicht ins GIT rein, oder? Also soll ich das durch eine .gitignore im media Ordner verhindern? Welcher Ordner muss in Repo rein damit die Bilder auf dem Live-Server auch zur verfügung stehen? Wie muss die .gitignore aussehen damit nichts verloren geht?
Welche Befehle muss ich auf dem Live-Server ausführen, damit die skalierten Bilder von Shopware erzeugt werden? php bin/console sw:warm:http:cache?

Bei den Antworten zu meinen Fragen ist eine detailierte Pfadangabe sehr hilfreich sowie Infos darüber warum etwas so gemacht werden sollte.

Wenn es eine Dokumentation dazu gibt wo meine Fragen beantwortet werden wäre ich auch über einen Link dazu dankbar, aber aktuell habe ich nicht viel dazu in der Shopware-Doku gefunden und sammel mir grade aus dem Forum ein wenig wissen hier & da zusammen, allerdings fehlen mir in den Antworten meist genaue Details um hilfreich zu sein oder es wird bereits einiges an shopware-wissen vorrausgesetzt damit man mit der Antwort etwas anfangen kann.

Als Letztes würde mich noch interessieren wie ihr die DB synchronisiert wenn mehrere Mitarbeiter lokal auf ihren PC’s arbeiten und jeder seine eigene DB benutzt. Diese sollte am besten als dump mit ins GIT Repo würde ich sagen. Es gibt tools zum mergen und so - damit würde ich mich noch mal seperat ausseinander setzen, aber über Hiweise was das betrifft wäre ich dankbar.

Gruß aus Hamburg
Martin

Viele gute Fragen - hoffe das sich hier nochmal jemand von SW zu Wort meldet. Gerade das Thema Plugin Deployment auf verteilten System würde mich interessieren.

 

Aktuell arbeite ich an einer Lösung - sobald ich damit durch bin werde ich mich hier mal melden. Dauert allerdings noch ein wenig.

Hi,

also bei uns im liegt immer der gesamte Shop im Repo. Der Ordner media und files jedoch nicht. Diese Dateien liegen bei uns in einem Shared folder und werden dann “gesymlinked”.

Wir schieben den ganzen Shop auf den Server, machen die ganzen Jobs wie object cache aufwärmen etc. und wenn alles fertig ist setzen wir nur den Symlink auf das neuste Release. So können wir auch einfach ein Rollback durchführen in dem wir den Symlink auf das alte Release Verzeichnis setzen.

Probleme sind natürlich nach wie vor:

  • externe Plugins updaten:  Wenn du die Datei überschreibst steht die alte Version noch in der Datenbank. Wir prüfen ob die Plugin Version über getVersion(), wenn abweichend updaten wir über die CLI das Plugin

  • shopware Updaten: da haben wir auch noch keine perfekte Lösung gefunden. 

Wir hatten letztes Wochenende auf der WEucEU eine Session zu Shopware Deployment mit einigen Shopware Entwicklern. Nach deren Aussage soll vieles dadurch erleichtert werden, dass du bald die Datenbank unabhängig updaten kannst. Diese ist dann folglich auch Downgrade fähig. Somit funktioniert auch ein Rollback deutlich einfacher. Hier musst du dann z.B. auch ähnlich wie bei Plugins die Version wieder auslesen und evtl. die Versionsnummer in der Datenbank ändern.

Laut Roadmap soll ja im Moment an Composer Integration und Deployment gearbeitet werden. Bei uns hoffen alle auf neue Deployment Features :slight_smile:

 

2 Likes

@Gizmodo schrieb:

Moin

Gibt es eine Dokumentation dazu wie das Deployment von einem System z.B lokale Development Umgebung über GIT zu einer anderen Umgebung z.B. Live-Server von statten zu gehen hat?
Die Aussage nur Sachen ins GIT zu packen die man ändert ist mir ein wenig zu dürftig muss ich sagen.
Ich benötige genaue Angaben darüber welche Ordner per .gitignore nicht ins Repo sollen und welche nicht.
Außerdem würde ich gerne wissen in welchen Ordnern sich Änderungen im Backend auswirken können z.B. wenn man Bilder hinzufügt oder so.
Welche Ordner gehören quasi zum Core von Shopware?
Gehe ich richtig davon aus, dass der Workflow so ist, dass man auf dem Live-Server auf den ich später aus dem GIT Repo deployen möchte, zuerst Shopware installieren muss und dann in das Shopware-Verzeichnis mein git clone Befehl ausführen soll (ich glaub da meckert git rum und meint, dass der Ordner nicht leer ist). Warum soll shopware nicht mit ins Repo rein?
Ich kenne das aus meiner bisherigen Laufbahn (nicht shopware-projekte) so, dass man das komplette Projekt ausscheckt, den DB-Dump imortiert und dann läuft es direkt. Ok, vielleicht muss man noch die Berechtigungen korrekt setzen und anstoßen, dass Bilder in verschiedenen Größen erzeugt werden. Aber das wars dann auch schon. Sind also nur 2-3 Befehle und gut ist…

Was ist bei den Plugins zu beachten?
In welchem Ordner liegen diese und warum sollen die nicht in das GIT rein? Oder doch rein?
Was wenn diese noch andere Ordner erzeugen und davon abhängig sind? Oder speichern die Plugins ihre Einstellungen außschließlich in der DB?
Wie ist der deployment Workflow damit gedacht? Soll man alle Plugins auf dem Live-Server erneut installieren? Erscheint mir etwas umständlich…

Wie werden die Bilder von Shopware gehandlet die man einem Artikel zuweißt? In welchem Ordner werden die original Bilder Abgelegt und wann werden die Bilder in verschiedenen Größen skaliert und abgelegt?
Ich habe gesehen, dass es einen media ordner gibt in dem shopware viele unterordner erzeugt mit Bildern unterschiedlicher Größe z.B. media/image/13 etc. Die sollen alle nicht ins GIT rein, oder? Also soll ich das durch eine .gitignore im media Ordner verhindern? Welcher Ordner muss in Repo rein damit die Bilder auf dem Live-Server auch zur verfügung stehen? Wie muss die .gitignore aussehen damit nichts verloren geht?
Welche Befehle muss ich auf dem Live-Server ausführen, damit die skalierten Bilder von Shopware erzeugt werden? php bin/console sw:warm:http:cache?

Bei den Antworten zu meinen Fragen ist eine detailierte Pfadangabe sehr hilfreich sowie Infos darüber warum etwas so gemacht werden sollte.

Wenn es eine Dokumentation dazu gibt wo meine Fragen beantwortet werden wäre ich auch über einen Link dazu dankbar, aber aktuell habe ich nicht viel dazu in der Shopware-Doku gefunden und sammel mir grade aus dem Forum ein wenig wissen hier & da zusammen, allerdings fehlen mir in den Antworten meist genaue Details um hilfreich zu sein oder es wird bereits einiges an shopware-wissen vorrausgesetzt damit man mit der Antwort etwas anfangen kann.

Als Letztes würde mich noch interessieren wie ihr die DB synchronisiert wenn mehrere Mitarbeiter lokal auf ihren PC’s arbeiten und jeder seine eigene DB benutzt. Diese sollte am besten als dump mit ins GIT Repo würde ich sagen. Es gibt tools zum mergen und so - damit würde ich mich noch mal seperat ausseinander setzen, aber über Hiweise was das betrifft wäre ich dankbar.

Gruß aus Hamburg
Martin

Hab dir mal unsere .gitignore per PN geschickt