GitLab Server auf das neueste Release-Patch aktualisieren: Eine Schritt-für-Schritt-Anleitung
Ein GitLab-Server sollte regelmäßig aktualisiert werden, um Sicherheitslücken zu schließen und von Stabilitätsverbesserungen zu profitieren. Ein Patch-Release (z. B. von Version 16.5.1 auf 16.5.2) beinhaltet in der Regel Fehlerbehebungen und Sicherheits-Fixes, verändert aber keine Datenbank-Schemata drastisch, weshalb diese Updates meist schnell und reibungslos durchführbar sind.
Diese Anleitung beschreibt das Vorgehen für eine GitLab Omnibus-Installation (Paketinstallation) unter Linux (Debian/Ubuntu sowie RHEL/CentOS/AlmaLinux).
Wichtiger Hinweis vorab: Der Upgrade-Pfad
Wenn Sie sich innerhalb derselben Minor-Version bewegen (z. B. 16.5.0 auf 16.5.3), können Sie das Update direkt durchführen. Möchten Sie jedoch mehrere Minor- oder gar Major-Versionen überspringen (z. B. von 16.3.x auf 16.5.x), müssen Sie zwingend den offiziellen GitLab Upgrade Path einhalten.
Schritt 1: Aktuelle Version ermitteln
Prüfen Sie zunächst, welche Version aktuell auf Ihrem Server läuft.
sudo gitlab-rake gitlab:env:info
(Alternativ können Sie die Version im Web-Interface unter Admin Area -> Overview einsehen).
Schritt 2: Vollständiges Backup erstellen (Pflicht!)
Führen Sie niemals ein Update ohne aktuelles Backup durch.
-
Anwendungsdaten sichern:
sudo gitlab-backup createDas Backup wird standardmäßig unter
/var/opt/gitlab/backups/abgelegt. -
Konfiguration und Secrets sichern: Die Konfigurationsdateien sind nicht im Standard-Backup enthalten und müssen separat kopiert werden:
sudo cp /etc/gitlab/gitlab.rb /etc/gitlab/gitlab-secrets.json /pfad/zu/ihrem/sicheren/speicherort/
Schritt 3: Paketlisten aktualisieren
Bringen Sie den Paketmanager Ihres Systems auf den neuesten Stand, um die verfügbaren GitLab-Patches abzurufen.
Für Ubuntu / Debian:
sudo apt update
Für RHEL / CentOS / AlmaLinux:
sudo dnf check-update
# bzw. älter: sudo yum check-update
Schritt 4: Das Update durchführen
Hinweis: Ersetzen Sie in den folgenden Befehlen
gitlab-eedurchgitlab-ce, falls Sie die kostenlose Community Edition nutzen.
Option A: Einfach auf das neueste verfügbare Patch aktualisieren
Wenn Ihr System bereits auf der Ziel-Minor-Version läuft (z. B. Version 16.5) und Sie nur den neuesten Patch dieser Version installieren wollen:
Ubuntu / Debian:
sudo apt --only-upgrade install gitlab-ee
RHEL / CentOS:
sudo dnf upgrade gitlab-ee
Option B: Eine ganz bestimmte Patch-Version installieren (Empfohlen)
Um die volle Kontrolle über die Zielversion zu behalten, können Sie das Paket explizit angeben.
Ubuntu / Debian:
# Verfügbare Versionen anzeigen lassen:
apt-cache madison gitlab-ee
# Spezifische Version installieren (Beispiel: 16.5.2):
sudo apt install gitlab-ee=16.5.2-ee.0
RHEL / CentOS:
# Verfügbare Versionen anzeigen lassen:
dnf --showduplicates list gitlab-ee
# Spezifische Version installieren (Beispiel: 16.5.2):
sudo dnf install gitlab-ee-16.5.2-ee.0.el8
Während des Prozesses stoppt GitLab die Dienste, wendet die Updates an, führt nötige Datenbank-Migrationen durch und startet die Dienste automatisch neu.
Schritt 5: Hintergrund-Migrationen prüfen
GitLab führt manche Datenbank-Migrationen im Hintergrund aus. Vor weiteren Aktionen oder Updates muss sichergestellt sein, dass diese abgeschlossen sind.
Führen Sie folgenden Befehl aus:
sudo gitlab-rails runner -e production 'puts Gitlab::BackgroundMigration.remaining'
Gibt der Befehl 0 zurück, sind alle Hintergrundprozesse abgeschlossen.
Alternativ können Sie dies im Web-Browser prüfen:
- Admin Area -> Monitoring -> Background Migrations (Hier sollten keine Tabs mehr als "Queued" oder "Running" markiert sein).
Schritt 6: Systemstatus und Funktionalität validieren
Führen Sie abschließend den GitLab-Integritätscheck durch:
sudo gitlab-rake gitlab:check SANITIZE=true
Wenn alle Punkte mit grünem yes oder ok markiert sind, loggen Sie sich in die GitLab-Weboberfläche ein und prüfen Sie:
- Ob Repositories gepullt/gepusht werden können.
- Ob die Benutzeroberfläche unter Admin Area die neue Patch-Version anzeigt.
Das Upgrade ist damit erfolgreich abgeschlossen.