Ich habe seit kurzem mein eigenes Gitlab auf einem vServer als Docker Container bei Hetzner laufen.
Jetzt stellt sich mir die Frage, wie ich das automatische Deployment ideal einrichte.
Also ich habe einen neuen SSH Schlüssel generiert, den Private Key bei Gitlab als Variable hinterlegt und den Public-Key auf dem Kundenserver (dev) (All-Inkl) kopiert.Sowohl rsync als auch ssh laufen im Gitlab Runner. Die Datenbank wird als pre-commit lokal exportiert und ins Commit mit aufgenommen. Auf dem Server lösche ich die Tabellen per PHP Script und importieren die Datenbank.
Soweit so gut. Im Prinzip läuft auch alles.
Dann bin ich auf diesen Workflow gestoßen:
https://github.com/richardhj/contao-....gitlab-ci.yml
Hier wird der SSH Key ja genauso benötigt wie oben beschrieben, um bestimmte Befehle per SSH auf dem Kundenserver auszuführen. Statt per rsync wird auf dem Kundenserver ein git fetch etc. ausgeführt.
1. Wo ist der Vorteil ggü rsync? Oder anders ausgedrückt, spricht was gegen rsync? composer install führe ich ja anschließend genauso aus wie im Workflow von Richard.
2. In Richards Workflow wird der Public Key vom Kundenserver bei Gitlab hinterlegt. Nur bei All-Inkl komme ich nicht an den Public Key? Vermutlich bei den meisten anderen Hostern auch nicht? Jetzt könnte ich einen zweiten SSH Key erstellen und mit git_ssh_command arbeiten. Ist das üblich? Scheint mir zu umständlich ggü rsync
3. Man könnte ja jetzt auf https und Gitlab-Token umstellen statt ssh mit keys. Oder?
4. Ich verwende bei einem bestimmten Projekt unterschiedliche parameters.yml, localhost.php, .htaccess für die Live-Version. Derzeit habe ich diese Dateien im Root Ordner als live-parameters.yml, live-localconfig.php etc. In der Gitlab-ci.yml lösche ich erst die parameters.yml und bewege die live-parameters.yml an die entsprechende Stelle. Mit den anderen Dateien verfahre ich genauso. Gibt es da einen eleganteren Weg?
Lesezeichen