Sollten Sie Ihre kompilierten Assets in Git einchecken?

9

Also habe ich diese Diskussion mit einigen Kollegen geführt, und ich möchte, dass andere Leute dies berücksichtigen. Ich bin gespannt, was andere Entwickler machen.

Was ich tun möchte, ist, meinen gesamten Build / Assets-Ordner aus dem Repo zu ignorieren. Dieser Ordner enthält mein kompiliertes CSS, Javascript und komprimierte Bilder. Ich denke, nur die Quelldateien sollten eingecheckt werden. Ich finde es ärgerlich, dass ich jedes Mal, wenn ich eine Stylesheet- oder JS-Datei ändere, die Quelldatei UND die neue kompilierte Version einchecken muss. Dies führt auch zu Zusammenführungskonflikten und anderen Problemen, wenn mehrere Personen an dem Projekt arbeiten. Ich mag es, das Repo schön und leicht zu halten, und dann muss der Entwickler das Projekt lokal erstellen, um eingerichtet zu werden. Oder lassen Sie den Server beim Bereitstellen das Projekt erstellen.

Dies ist ein Problem, weil meine Mitarbeiter Git als Deploy-Prozess verwenden. Also, wenn Sie bereitstellen möchten, überprüfen Sie Ihren Code in git, drücken Sie es auf den Remote-Repo, und dann SSH in den Server und tun Sie ein Git holen & amp; & amp; git ziehen. Dies bedeutet, dass ALLE Website-Dateien im Repo gespeichert werden müssen. Also muss ich jetzt meinen Assets-Ordner einchecken.

Wie geht ihr damit um? Ich verwende bedrock-ansible für eine Wordpress-Site, und es gibt eine Option, einige Befehle direkt vor der Bereitstellung auszuführen, also habe ich es so konfiguriert, dass npm install && gulp build ausgeführt wird und das Projekt erstellt wird, aber das Problem ist, dass es viel zu langsam war . Die Funktionsweise von angestaubt ist, dass es für jede Bereitstellung ein neues Release-Verzeichnis erstellt und nur das letzte Verzeichnis mit dem Verzeichnis current verknüpft. Also lief jedes Mal, wenn ich es implementierte, npm install , während ich in Wirklichkeit nur diese Abhängigkeiten in einem gemeinsamen Verzeichnis benötige. Es könnte einen Weg geben, dies mit npm install --prefix install/dir zu tun, aber ich habe es noch nicht getestet. Ich denke, das könnte weitere Probleme mit sich bringen.

Im Moment musste ich alle meine kompilierten Assets einchecken, damit das funktioniert. Aber bei meiner gulp watch Aufgabe habe ich keine Minification, aber wenn ich etwas bereitstellen möchte, möchte ich gulp build zuerst ausführen, was alles verkleinert und egglifiziert - also müsste ich technisch immer einen Commit machen wenn Ich möchte die Site bereitstellen. Es ist ein Chaos. Was denkst du, ist ein guter Weg, damit umzugehen?

    
Drew 29.05.2015, 19:54
quelle

2 Antworten

2

gulp build könnte alle kompilierten Dateien in ein dist/ -Verzeichnis schreiben und gulp publish könnte dieses Verzeichnis an die entfernte Datenbank senden. Sie können hierfür git-directory-deploy verwenden:

%Vor%

Oder Sie können manuell eine separate Verzweigung für kompilierte Assets einrichten und sie bei der Bereitstellung Ihrer Website an den Remote-Server senden ( diese SO-Antwort könnte helfen).

Auf diese Weise können Sie einen sauberen Verlauf in Ihrem Entwicklungszweig pflegen und sich nicht um Zusammenführungskonflikte kümmern, während Sie Git weiterhin als Bereitstellungsprozess verwenden.

    
eush77 30.05.2015 11:08
quelle
0

Anstatt direkt auf den Server zuzugreifen, können Sie eine Aufgabe erstellen, die bei lokaler Ausführung Folgendes ausführt:

  • bumps die Version
  • Erstelle das Projekt
  • Fügen Sie die kompilierten Elemente mit der Option --force
  • zu git hinzu
  • bestätigt die Änderungen
  • erstellt ein Tag
  • schiebt alles auf das Remote-Repository
  • sshs zum Server
  • zieht neue Ressourcen an
Diego Carrion 30.05.2015 06:56
quelle

Tags und Links