Hauptfrage: Ist die Bereitstellung mit Git auf Produktionsservern eine gute Strategie?
Viele, viele Bereitstellungsstrategien, die ich sehe, drehen sich darum, Git auf Ihren Servern zu haben (Entwickler, Staging und Produktion).
Die Vorzüge davon scheinen für den Einsatz auf der Bühne / Produktion offensichtlich zu sein:
- Fähigkeit, Änderungen schnell einzuziehen
- Einfachere Automatisierung
- Kann bei Bedarf die Verzweigung wechseln (Verzweigung pro Testserver möglicherweise)
- Kann sehen, ob Dateien auf einem Produktionsserver irgendwie geändert wurden
Ich sehe jedoch einige Nachteile:
- Sicherheit - Git scheint ein potenzieller Angriffsvektor zu sein, selbst wenn die Produktion schreibgeschützt ist
git pull
auf einem Produktionsserver kann ausfallen, wenn es irgendwie nicht bereitgestellte Änderungen in der Produktion gibt (obwohl mit -f überwindbar)
Deployment as a Service-Unternehmen (z. B. Beanstalkapp.com, deployhq.com) verwenden FTP, SFTP oder SSH. Insbesondere Beanstalkapp kann nur Dateien basierend auf dem Git-Verlauf ändern (anstatt jede Datei erneut bereitzustellen). Diese Dienste verlangen nicht, dass Sie Git auf Ihren Stage- / Produktionsservern haben (auch wenn Sie über SSH bereitstellen, ist es wahrscheinlich, dass Sie diese Strategie verwenden würden / könnten).
Ich habe festgestellt, dass ich gerne sftp benutze:
- Kann Skripte vor / nach der Bereitstellung noch ausführen
- Überschreibt, verschiebt, löscht Dateien unabhängig davon, was sich auf dem Produktionsserver befindet (das ist ein Plus für mich)
- Sie haben kein .git-Verzeichnis oder eine git-basierte Angriffsanfälligkeit in der Produktion
Lohnt sich die einfache Verwendung von Git auf einem Produktionsserver im Hinblick auf Best Practices und Sicherheit? Wenn nicht, wie kann die Bereitstellung erfolgen, während Tools für die kontinuierliche Integration übersprungen werden?
(Ich frage nur nach dem Überspringen von CI-Tools, da Zeit-, Budget- und Kundenbeschränkungen sie in meinem täglichen Gebrauch nicht zulassen.)