Als Programmier bist du sicherlich bereits in den Genuss einer Versionierung mittels git gekommen. Anpassungen am Code lassen sich so einfach nachvollziehen und auf verschiedene Systeme einspielen. Kein Fragezeichen überm Kopf? Dann lasst mich euch erklären, wie ich mit einem einfachen Bash Skript und ein paar git Befehlen meine Projekte auf den Server deploye.
Dank meinem Skript muss ich mir keine Befehl-Abfolgen mehr merken, sondern erledige das Deployment mit einem einfach zu merkenden Befehl:
./deploy.sh
.sh ist die Dateiendung für ein Shell-Skript. Dieses habe ich geschrieben, um die Ganzen git und symfony2 Befehle in einem Kommando bündeln zu können.
Schauen wir mal in das Skript rein. Dieses deploy Skript ist auf ein symfony2 Projekt spezialisiert, aber das kann man natürlich ganz an seine Wünsche anpassen.
#!/bin/bash cd .. git pull composer update php app/console doctrine:schema:update --force php app/console assets:install web --symlink php app/console cache:clear --env=prod
Zeile 1 gibt an, welche Konsole verwendet werden soll. In diesem Falle ist das die normale Bash. In Zeile 3 wird erst einmal in das symfony2-typische Haupt-Verzeichnis navigiert (das Skript liegt bei mir im „bin“ Ordner), um dann den aktuellen Branch mittels pull Befehl abzuholen.
Anschließend werden die folgenden Arbeiten erledigt:
- Composer-Abhängigkeiten aktualisieren
- Datenbanktabellen aktualisieren
- Assets installieren
- Cache für die Produktivumgebung leeren
Zugegeben, die Aufgaben sind nicht bei allen Änderungen immer nötig. Wenn ihr aber keine riesigen Projekte am Laufen habt, dauert es nicht lange das Skript auszuführen.
Wem das überflüssig erscheint, kann das Skript so erweitern, dass mit Hilfe von Parametern nur bestimmte Aufgaben angestoßen werden.
Neben einem deploy Skript könnte man so auch ein install Skript entwickeln.
Abgesehen davon, dass man sich per ssh auf den Server verbinden und ins richtige Verzeichnis navigieren muss, wo das deploy Skript liegt, erspart das kleine simple Skript also jede Menge Arbeit auf dem Livesystem oder auf eurem Entwicklungssystem, wenn ihr mit mehreren Entwicklern an einem Projekt arbeitet.