Aller au contenu
Culture DevOps medium

Mettre à jour GitLab self-managed

9 min de lecture

GitLab publie une nouvelle version tous les mois (22 du mois). Les mises à jour mineures (ex: 18.1.0 → 18.2.0) s'appliquent en une commande apt/dnf. Les mises à jour majeures (ex: 17.x → 18.x) nécessitent de suivre un chemin d'upgrade précis, sauter des versions est une des causes les plus fréquentes de corruption de base de données.

Toujours sauvegarder avant de mettre à jour. Voir Sauvegarder et restaurer GitLab.

GitLab suit Semantic Versioning modifié :

18.10.1
│ │ └── Patch : correctifs de sécurité/bugs
│ └──── Minor (feature) : nouvelles fonctionnalités
└────── Major : changements majeurs, migrations DB complexes
TypeExempleRisqueDowntime
Patch18.10.0 → 18.10.1Très faibleNon (zero-downtime migrations)
Minor18.9.x → 18.10.xFaibleNon (en général)
Major17.x → 18.xÉlevé si saut de versionsPossible
Fenêtre de terminal
# Version courte
sudo gitlab-rake gitlab:env:info 2>/dev/null | grep "GitLab information" -A 5
# Ou directement
cat /opt/gitlab/version-manifest.json | python3 -c \
"import sys,json; d=json.load(sys.stdin); print(d['build_version'])"

Résultat :

18.10.1

C'est le cas le plus courant : 18.9.5 → 18.10.1, ou 18.10.0 → 18.10.1.

  1. Vérifier la version disponible

    Fenêtre de terminal
    apt-cache policy gitlab-ce
    gitlab-ce:
    Installed: 18.10.1-ce.0
    Candidate: 18.10.1-ce.0

    S'il n'y a pas de candidate plus récent, votre version est à jour.

  2. Créer une sauvegarde

    Fenêtre de terminal
    sudo gitlab-backup create

    Vérifiez que la sauvegarde est complète avant de continuer.

  3. Installer la mise à jour

    Fenêtre de terminal
    sudo apt-get update
    sudo apt-get install gitlab-ce

    GitLab lance automatiquement gitlab-ctl reconfigure à la fin du package. La mise à jour prend 5 à 15 minutes selon les migrations de base de données.

  4. Vérifier après la mise à jour

    Fenêtre de terminal
    # Version installée
    sudo gitlab-rake gitlab:env:info 2>/dev/null | head -20
    # Tous les services opérationnels
    sudo gitlab-ctl status
    # Migrations appliquées
    sudo gitlab-rake db:migrate:status 2>/dev/null | tail -10

Mise à jour majeure (changement de version majeure)

Section intitulée « Mise à jour majeure (changement de version majeure) »

Utilisez l'outil officiel : GitLab Upgrade Path Tool

Exemple : mise à jour de 16.3.x vers 18.10.x

16.3.x → 16.11.x → 17.3.x → 17.11.x → 18.10.x

Les versions intermédiaires (16.11.x, 17.3.x, 17.11.x) sont des versions requises (required stops). Vous devez vous arrêter à chaque étape et vérifier que les migrations sont complètes.

  1. Mettre à jour vers la première version intermédiaire

    Fenêtre de terminal
    # Installer une version spécifique (exemple : 16.11.10)
    sudo apt-get install gitlab-ce=16.11.10-ce.0

    Pour lister les versions disponibles :

    Fenêtre de terminal
    apt-cache madison gitlab-ce | head -20
  2. Attendre la fin des migrations background

    Certaines migrations s'exécutent en arrière-plan (Sidekiq) après le reconfigure. Attendez qu'elles soient toutes terminées avant de continuer :

    Fenêtre de terminal
    sudo gitlab-rake gitlab:db:validate_config

    Ou via l'interface : Admin Area → Monitoring → Background Migrations, attendez que la liste soit vide.

  3. Répéter pour chaque étape du chemin

    Fenêtre de terminal
    # Étape suivante
    sudo apt-get install gitlab-ce=17.3.x-ce.0
    # ... vérifier, puis continuer
  4. Installer la version cible

    Fenêtre de terminal
    sudo apt-get install gitlab-ce=18.10.1-ce.0
    # ou pour la dernière version disponible :
    sudo apt-get install gitlab-ce

C'est l'étape critique souvent sautée :

Fenêtre de terminal
# Via la console Rails
sudo gitlab-rails runner "puts Gitlab::BackgroundMigration.remaining"

Le résultat doit être 0 avant de passer à la version suivante.

Via l'interface web : Admin AreaMonitoringBackground Migrations

Pour installer une version précise (utile pour les chemins d'upgrade) :

Fenêtre de terminal
# Lister les versions disponibles
apt-cache madison gitlab-ce
# Installer une version précise
sudo apt-get install gitlab-ce=18.9.5-ce.0

Procédure de rollback :

  1. Arrêter GitLab

    Fenêtre de terminal
    sudo gitlab-ctl stop
  2. Réinstaller l'ancienne version

    Fenêtre de terminal
    # Remplacer par la version précédente
    sudo apt-get install gitlab-ce=18.9.5-ce.0
  3. Restaurer le backup

    Suivre la procédure de restauration complète.

Automatiser les mises à jour de sécurité (patches)

Section intitulée « Automatiser les mises à jour de sécurité (patches) »

Les mises à jour patch (18.10.0 → 18.10.1) sont généralement sans risque et peuvent être automatisées :

Fenêtre de terminal
# Ubuntu/Debian : unattended-upgrades avec sélection du dépôt
sudo apt-get install -y unattended-upgrades
# Ajouter le dépôt GitLab dans la whitelist
cat >> /etc/apt/apt.conf.d/50unattended-upgrades << 'EOF'
Unattended-Upgrade::Allowed-Origins {
"packages.gitlab.com/gitlab/gitlab-ce:noble";
};
EOF
SymptômeCause probableSolution
FATAL: Mixlib::ShellOut::ShellCommandFailedMigrations DB échouéessudo gitlab-rake db:migrate puis relancer
Service puma down après mise à jourIncompatibilité configsudo gitlab-ctl tail puma pour le détail
500 Whoops après reconfigureNouveau paramètre obligatoireVérifier gitlab.rb et les notes de release
Mise à jour bloquée sur "waiting for background migrations"Migrations background en coursAttendre ou forcer : gitlab-rails runner "..."
apt-get install gitlab-ce installe la mauvaise versionCache apt non rafraîchisudo apt-get update d'abord
  • Sauvegarder avant toute mise à jour, sans exception.
  • Les mises à jour patch et mineures sont en une commande, généralement sans interruption.
  • Les mises à jour majeures nécessitent un chemin d'upgrade précis, ne jamais sauter de version majeure.
  • Utilisez l'outil de chemin d'upgrade pour calculer votre trajectoire.
  • Attendez que les background migrations soient à zéro avant chaque étape d'un chemin d'upgrade.
  • Le rollback passe obligatoirement par la restauration d'un backup.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn