Simples deployment via git
Table of Contents
Das Problem⌗
Egal ob Homepage, Konfigurationsdateien oder Programmcode: Für praktisch alle Projekte verwendet man heute git.
Möchte man jedoch Versionen automatisch ausrollen (z.B. statische HTML Dateien einer Webseite), benötigt man einige Skripte oder einen Build-Dienst wie z.B. Gitlab-CI, Jenkins oder CircleCI.
Oftmals reicht es jedoch die Daten auf das Zielsystem zu kopieren. Aber auch das geht mit git:
Ausgangssituation⌗
Wie haben einen Server (für die Homepage), einen Laptop (für die Entwicklungsarbeit), sowie ein Git-Projekt (z.B. bei Github).
Auf Github befindet sich unser Projekt.
Auf Laptop wie auch auf dem Server haben wir uns mit git clone
das Projekt eingerichtet.
Vorgehen⌗
Das Projekt auf dem Server soll beim Empfangen neuer Dateien diese auch in das “Working Directory” schreiben. Dies aktivieren wir mit:
# auf Server, im Projektverzeichnis
git config receive.denyCurrentBranch updateInstead
Nun müssen wir unserem Projekt auf dem Laptop das neue Ziel beibringen:
# auf Laptop, im Projektverzeichnis
git remote add deploy benutzer@servername:/pfad/zu/projektordner/auf/server
# jetzt noch sagen: schiebe den lokalen branch _master_ auf den server (nur 1 mal notwendig)
git push --set-upstream deploy master
Unsere Änderungen können wir weiterhin zu Github schieben:
git push origin
Aber nun auch neu: Auf dem Server direkt ausrollen:
git push deploy
Es ist sogar möglich mittels push-url
mehrere Ziele auf einmal zu definieren.
Fazit⌗
Natürlich ersetzt unser kleiner Workflow keinen Build-Server oder ausgetüftelte Deployment Prozesse. Aber für Kleinst-Projekte kann das vorgehen mit updateInstead
sehr praktisch sein.
Aber Achtung: Verwenden wir diese Möglichkeit um Webseiten zu versionieren: Nicht vergessen, den .git
Ordner nicht auszuliefern.