Gitlab Deployment Safety

Definition Deployment Job #

Ein Deployment Job ist eine spezieller CI/CD Job, der das Programm zur Verwendung bereitstellt. In einer Gitlab Pipeline ist es jedoch keine spezieller Typ. Es hilft jedoch ihn so zu benennen, da auf einiges speziell geachtet werden sollte.

Grundsätzliche Überlegungen #

Der Runner holt Jobs von Gitlab. Dadurch kommt er einfacher durch NAT und Firewall. Er verwendet dazu denn HTTPS Port.

Es sollte sichergestellt sein, dass der Deployment Job nicht paralell ausgeführt wird:

Es sollten auch keine veralteten Deployment Jobs ausgeführt werden:

  • Dazu muss in den Project Settings die Option “Prevent outdated deployment jobs” checkbox aktiviert werden.

Protected environments #

Damit können Gruppen oder Benutzer definiert werden, die ein Environment deployen dürfen. Standardmässig gibt es nur die Möglichkeit von Rollen, die jedoch nur auf das Projekt und nicht auf Jobs wirken.

Auf dem Job bgibt es nun ein “Environment” Property.

Roll back a deployment #

Eine vorheriger Deployment Job kann erneut ausgeführt werden, wenn ein aktueller Deployment-Job fehlschlägt. Dazu muss in den Project Settings einiges eingestellt werden.

Protect production secrets #

Es gibt:

Separate project for deployments #

Grundsätzlich haben alle Maintainer eines Projektes Zugriff auf die Variablen. Es könnte ein separates Projekt für das Deployment eingerichtet werden. Dann kann dort eine Multi-Project Pipeline erstellt werden.

Protect .gitlab-ci.yml from change #

Die .gitlab-ci.yml Datei kann in einem anderen Repository sein.

https://docs.gitlab.com/ee/ci/pipelines/settings.html#specify-a-custom-cicd-configuration-file

Deployment approvals #

Jobs müssen approved werden, bevor sie ausgeführt werden. Es kann dabei eine Zahl definiert werden.

Gitlab-Runner Schema #

Es kann mehrere Runner in Gitlab eingefügt werden.

Variante 1:

  • Es gibt einen Runner für Build und Deploy sowie einen Zielserver.
  • Es gibt zwei Runner je für Build und Deploy sowie einen Zielserver.
  • Es gibt zwei Runner je für Build und Deploy. Der Deploy Runner läuft auf dem Zielserver.
Calendar August 22, 2023