---
title:  "Gitlab upgrade"
excerpt: "Git staat centraal in vele organisaties en Gitlab maakt heel wat zaken gemakkelijk. Met een zekere regelmaat komen hier echter veiligheidslekken naar boven en upgrades zijn niet altijd eenvoudig."
coverImage: "/Git/cover_GitlabUpgrade.png"
date:   "2023-09-06T06:00:00.000Z"
author: Eli Winderickx
hero_image: /cover_GitlabUpgrade.png
category: Gitlab,DNF,Linux
---
## We doen een update en klaar is kees!
Helaas pindakaas! Als we niet het juiste pad volgen, brengen we onze Gitlab installatie in gevaar. Het proces van upgraden is niet moeilijk maar je moet weten wat je aan het doen bent. Hierbij komen ook een paar goede pointers die je bij de upgrade van alle belangrijke software zal helpen:

### Maak snapshots!
Servers zijn vaak gevirtualiseerd. Iedere productiewaardige virtualisatiesoftware biedt snapshots aan en ook hier wil je daar gebruik van maken. Vóór iedere upgrade maak je best een snapshot en dan kan je met een gerust hart er in vliegen.

![Verschillende snapshots over upgrades heen](/GitlabSnapshots.png)

### Lees de documentatie
Gitlab maakt goed tijd vrij om duidelijk te maken aan gebruikers wat er verandert in de verschillende versies. Daar ga je ook terugvinden wat er achterliggend zou verandert zijn, waar jij op moet letten of waarom je na een succesvolle upgrade niet meteen aan de volgende mag beginnen.

![Gitlab documentatie over eventuele upgrade issues](/GitlabUpgradeDocumentation.png)

### Communiceer!
Gebruikers die actief zijn op jouw Gitlab instantie moeten weten dat je de upgrade gaat doen. Dat betekent dat ze tijdelijk niet op hun Gitlab kunnen rekenen. Eventuele automatische installaties zullen dus ook even niet lukken.

> Een upgrade doe je dus best niet als er deadlines te halen zijn voor je gebruikers.

## Wat eerst dan?
Als je gebruik maakt van een RHEL gebasseerde server en je hebt Gitlab met de repo's geïnstalleerd, zou je DNF kunnen gebruiken om allereerst al wat informatie te verzamelen over de upgrade. Uit onderstaand commando ga je eenvoudig kunnen zien in welke versie je momenteel werkt en welke versies beschikbaar zijn als upgrade.

```bash
sudo dnf list gitlab-ee --showduplicates
```

![DNF list duplicates voor gitlab-ee](/GitlabDuplicates.png)

In mijn voorbeeld, dat expres verouderd is, zit ik op versie 15.10.2. Alles wat daarboven staat zijn de oude versies en alles eronder de nieuwe.

## Ik heb geen tijd voor documentatie
Gitlab maakt in hun documentatie duidelijk welke [`upgrade stops`](https://docs.gitlab.com/ee/update/#required-upgrade-stops) je zeker moet maken. Als je daarvoor geen tijd hebt, kan je ook volgens dit principe werken. Upgrade per minor tot het einde en daarna kan je naar de eerst volgende major gaan.

```bash
# In mijn voorbeeld dus eerst
sudo dnf upgrade gitlab-ee-15.10.8
```

> Nadat de installatie klaar is, gaat jouw Gitlab misschien nog niet online zijn. Wacht tot je terug aan jouw Gitlab kunt voordat je deze gaat updaten.

![HTTP error 502 omdat de upgrade nog lopende is](/GitlabUpgrading.png)

```bash
# Daarna is 15.11.0 de eerst volgende versie voor mij
sudo dnf upgrade gitlab-ee-15.11.0
```
Volgens de documentatie hadden we deze versie moeten overslaan en rechtstreeks naar 15.11.13 moeten gaan. Als je de documentatie niet gelezen had, heb je nu een probleem. Neem nu dus zeker de tijd om de [documentatie](https://docs.gitlab.com/ee/update/versions/gitlab_16_changes.html#undefined-column-error-upgrading-to-162-or-later
) wel door te nemen.


```bash
# We gaan dus best naar 15.11.13
sudo dnf upgrade gitlab-ee-15.11.13
# Nu kunnen we naar 16.0.0. Deze upgrade stop is vooral
# belangrijk voor organisaties met veel gebruikers
sudo dnf upgrade gitlab-ee-16.0.0
# In 16.1 zijn ook grote aanpassingen gebeurt
sudo dnf upgrade gitlab-ee-16.1.0
# De voorlaatste halte is nu 16.3
sudo dnf upgrade gitlab-ee-16.3.4
# Waarna we de laatste upgrade kunnen uitvoeren.
sudo dnf upgrade gitlab-ee-16.4.0
```

![Gitlab is up-to-date](/GitlabUpToDate.png)

## Voor je gaat...
Het was een heel werkje om Gitlab vanaf een oudere versie up-to-date te brengen. De beste raad die ik je dan kan meegeven is de upgrades zo regelmatig mogelijk uit te voeren. Volg in Gitlab de officiële versies en voer een update uit zo snel als het past. Opnieuw lees de documentatie voor je die uitvoert om zo tranen te vermijden.

Veel succes en veel plezier! 👋😊