|
|
Deployment
|
|
|
================
|
|
|
Eine neue version von Dozentron könnt ihr auf den Server laden indem ihr die Version auf den Master Branch pushed und den Befehl `cap production deploy` Aufruft. Das startet einen automatischen Deploy mit Capistrano.
|
|
|
# Deployment
|
|
|
|
|
|
Sollte der Server nach eurem Update brennen könnt ihr mit `cap production deploy:rollback` einen Rollback auf die letzte Version machen. Wenn Das neue updated die Daten in der Datenbank schlecht verändert hat, habt ihr Trotzdem Probleme, da deploy und rollback keine backups machen.
|
|
|
Für das Deployment bei Dozentron wird wie bei [Gildamesh](https://git.thm.de/thsg47/gamification) auch das Ruby Gem [Capistrano](https://capistranorb.com/) verwendet.
|
|
|
|
|
|
Es gibt die möglichkeit mit Capistrano beim Deploy automatisch ein Backup zu machen, dies ist aber für Dozentron nicht eingerichtet, aber Gildamesh hat es.
|
|
|
## Voraussetzungen
|
|
|
|
|
|
Falls es euch interessiert was capistrano noch kann, könnt ihr `cap -T` ausführen um eine liste aller befehlse zu bekommen. |
|
|
\ No newline at end of file |
|
|
Da das komplette Deployment über Capistrano läuft, muss dieses Gem natürlich auch lokal installiert sein.
|
|
|
Dies sollte automatisch der Fall sein, wenn Dozentron [lokal eingerichtet](resource/setup-server) wurde.
|
|
|
|
|
|
Zusätzlich wird für das Deployment SSH benötigt. Stelle also sicher, dass SSH lokal installiert und konfiguriert ist.
|
|
|
|
|
|
Es muss selbstverständlich auch der Server vom aktuellen Host aus erreichbar sein, um das Deployment durchzuführen.
|
|
|
Dafür wird im Zweifelsfall eine korrekt eingerichtete VPN-Verbindung benötigt.
|
|
|
|
|
|
## Konfiguration
|
|
|
|
|
|
Capistrano ist so konfiguriert, dass die Version, die aktuell auf dem Master-Branch in Git liegt, auf den Server geladen wird.
|
|
|
|
|
|
Die Konfiguration ist einzusehen im Unterverzeichnis [config/production/](https://git.thm.de/dalt40/dozentron/tree/development/config/deploy) innerhalb des Dozentron Projektordners.
|
|
|
Für jede "Server-Version" wird dabei eine eigene Konfigurationsdatei angelegt.
|
|
|
Die allgemeine Konfiguration befindet sich in der Datei [config/deploy.rb](https://git.thm.de/dalt40/dozentron/blob/development/config/deploy.rb).
|
|
|
|
|
|
Im Normalfall sollte eine Änderung der Konfiguration jedoch nicht notwendig sein.
|
|
|
|
|
|
|
|
|
## Deployment
|
|
|
|
|
|
Um eine neue Version von Dozentron auf den Server zu laden, muss diese auf dem Master-Branch in Git liegen. Capistrano verwendet **immer** die Version, die aktuell sich aktuell auf Git befindet.
|
|
|
|
|
|
Das automatische Deployment mit Capistrano wird dann mit dem Befehl `cap production deploy` gestartet.
|
|
|
Dieser Befehl muss lokal ausgeführt werden.
|
|
|
Danach verbindet sich Capistrano mit dem Server, installiert dort die neuen Dateien und führt eventuell notwendige Migrationen der Datenbank durch.
|
|
|
|
|
|
Andere Branches können mit `cap development deploy` und `cap test deploy` ausgewählt werden.
|
|
|
Dabei wird dann nicht der Master-Branch von Git für das Deployment verwendet, sondern "Development" oder "Test". Für genauere Informationen zum Zustand der einzelnen Branches siehe [Übersicht der Branches](https://git.thm.de/dalt40/dozentron/branches).
|
|
|
|
|
|
**Wichtig:** Zur Zeit besteht nicht die Möglichkeit, ein automatisches Backup beim Deploy anzulegen.
|
|
|
Capistrano bietet zwar dieses Feature, jedoch ist dies nicht für Dozentron eingerichtet.
|
|
|
|
|
|
|
|
|
## Wiederherstellung alter Version
|
|
|
|
|
|
Falls nach einem Deploy die Notwendigkeit besteht, die Änderungen rückgängig zu machen, bietet Capistrano folgenden Befehl:
|
|
|
`cap production deploy:rollback`
|
|
|
|
|
|
Dies macht einen Rollback auf die letzte Version, die auf dem Server installiert war.
|
|
|
Jedoch werden bei einem Rollback nur die Dateien der vorherigen Installation wieder auf dem Server installiert.
|
|
|
Wenn also durch einen Deploy die Datenbank negativ verändert wurde, kann Capistrano dies **nicht** beheben!
|
|
|
|
|
|
|
|
|
## Weitere Features
|
|
|
|
|
|
Eine komplette Liste der Features von Capistrano, die für Dozentron eingerichtet sind, kann mit dem Befehl `cap -T` angezeigt werden.
|
|
|
Eine grobe Übersicht folgt jedoch hier:
|
|
|
|
|
|
### Maintenance
|
|
|
|
|
|
Es gibt die Möglichkeit einen Maintenance-Mode für Dozentron zu aktivieren, der es ermöglicht das System am laufen zu halten, jedoch Nutzern den Zugriff über das Webinterface zu verweigern.
|
|
|
|
|
|
Dieser ist auch über Capistrano eingebunden und kann mittels `cap maintenance:enable` aktiviert und mittels `cap maintenance:disable` wieder deaktiviert werden.
|
|
|
|
|
|
### Überprüfung von Voraussetzungen
|
|
|
|
|
|
Befehle zur Überprüfung von Voraussetzungen beinhalten meist das Schlüsselwort "check".
|
|
|
So gibt es `cap git:check` zur Überprüfung, ob Git erreichbar ist, bevor ein Deploy versucht wird oder `cap deploy:check` zur Überprüfung der benötigten Dateien.
|
|
|
|
|
|
### Slack
|
|
|
|
|
|
Capistrano bietet eine Anbindung an Slack. Die entsprechenden Befehle starten mit `cap slack:...` und werden beispielsweise beim Deploy verwendet, um ein Statusupdate an Slack zu senden. |