Deploy Jobs
Ein Deploy-Job ist ein Befehl, der vor dem Deployment eines neuen Releases
ausgeführt wird. Das Release wird nur ausgerollt, wenn der Deploy-Job
erfolgreich abgeschlossen ist. Der Befehl des Deploy-Jobs hat Zugriff auf die
gleiche Umgebung und dieselben Binärdateien wie die Anwendungs-Runtime. Ein
häufiger Anwendungsfall für Deploy-Jobs ist das Ausführen von
Datenbank-Schema-Migrationen. Ein Deploy-Job kann entweder bei
Anwendungserstellung oder später über den update
-Befehl definiert werden.
Wenn ein Deploy-Job scheitert, wird das dazugehörige Release als gescheitert markiert und insofern ein vorheriges Release vorhanden ist, läuft dieses weiter.
Einen Deploy-Job bei Anwendungserstellung definieren
Sie können einen Deploy-Job bei Erstellung einer Anwendung definieren. Dazu
können Sie verschiedene Flags im Befehl nctl create app
nutzen, die auf den
Deploy-Job verweisen.
--deploy-job-command="rake db:prepare" Befehl zum Ausführen vor dem Deployment des neuen Releases. Wenn dies nicht definiert ist, wird
kein Deploy-Job ausgeführt.
--deploy-job-name="release" Name des Deploy-Jobs. Das Deployment wird nur fortgesetzt, wenn der Job erfolgreich abgeschlossen ist.
--deploy-job-retries=3 Die Häufigkeit, mit der der Job beim Scheitern erneut gestartet wird. Der Standard ist 3, die
maximale Häufigkeit 5.
--deploy-job-timeout=5m Timeout des Jobs. Der Standard ist 5 Minuten, Mindestdauer ist 1 Minute, Höchstdauer 30 Minuten.
$ nctl create app --deploy-job-command="rake db:prepare"
Der Deploy-Job wird jedes Mal ausgeführt, wenn für einen neues Release ein Neustart der Anwendung notwendig ist. Die folgenden Ereignisse führen zur Ausführung des Deploy-Jobs:
- Ein neuer Build steht zur Verfügung
- Die Konfiguration der Anwendung wurde verändert (neue Umgebungsvariablen, Veränderung der Grösse, etc.)
Einen Deploy-Job auf anderen Konfigurationsebenen definieren
Da Deploy-Jobs bei Deploio-Anwendungen zur Konfiguration gehören, können Sie
sie auch auf anderen Konfigurationsebenen definieren.
Sie können einen Deploy-Job zum Beispiel über die Quelldatei für die
git-Konfiguration .deploio.yaml
festlegen.
deployJob:
name: "release"
command: "rake db:prepare"
retries: 3
timeout: 5m
Den Status eines Deploy-Jobs einsehen
Wenn ein Deploy-Job scheitert, wird der dazugehörige Release als gescheitert markiert und insofern ein vorheriger Release vorhanden ist, läuft dieser weiter. Um den Status eines Deploy-Jobs im Detail zu sehen, können Sie den kompletten Release einsehen:
$ nctl get releases brave-scrambler-vc78b -o yaml
[...]
status:
atProvider:
deployJobStatus:
exitTime: 2023-07-18T11:01:47Z
name: brave-scrambler-vc78b-deploy-job
reason: backoffLimitExceeded
startTime: 2023-07-18T11:00:58Z
status: failed
releaseStatus: failure
Am Ende des Releases sehen Sie den Status. Dort wird detailliert dargestellt,
wann und wie der Deploy-Job gescheitert ist. Zusätzlich zum Status wird das
Deploy-Job-Log auch dem normalen App-Log zugefügt und kann über den Befehl nctl logs app
eingesehen werden.