Mettre en place un GitLab Runner
Objectif
Installer et configurer un GitLab Runner
Pré-requis
Il faut disposer d'un accès à un serveur GitLab. De mon côté, j'utilise un serveur GitLab hébergé en local.
Tutoriel
Installation
Pour l'article, nous aurons besoin d'un ordinateur, ou d'une machine virtuelle, ayant GitLab Runner et Docker installés.
Au lieu de détailler l'installation des logiciels, je vous ai mis les liens vers les documentations officielles. De mon côté, j'ai utilisé une machine virtuelle avec Debian Buster où j'ai procédé aux installations ci-dessous.
Voici le lien vers la documentation de Gitlab sur l'installation d'un Gitlab Runner. Et le lien vers la documentation de Docker.
Une fois installé, il faut ajouter l'utilisateur gitlab-runner
au groupe docker
en lançant cette commande : /usr/sbin/usermod -aG docker gitlab-runner
.
Vous pouvez vérifier vos installations en lançant les commandes : gitlab-runner --version
pour le Runner et docker --version
pour Docker.
Enregistrement du GitLab Runner
Avant d'enregistrer le Runner dans GitLab, il faut disposer de l'URL du serveur GitLab et du token d'enregistrement. Vous pouvez les retrouver, soit au niveau d'un projet, soit au niveau d'un groupe. Pour ma part, j'enregistre mes runners dans les groupes.
Pour enregistrer un Runner dans GitLab, il faut être authentifié en root
sur votre machine et lancer la commande : gitlab-runner register
.
En lançant cette commande, vous aurez un questionnaire à renseigner avec l'URL du serveur GitLab, le token, la description du Runner, les tags associés, le type d'exécution...
Dans mon cas, j'ai créé un Runner Docker, j'ai renseigné l'image Docker par défaut que je souhaite utiliser.
Une fois enregistré, les paramètres que vous avez renseignés sont stockés dans le fichier de configuration /etc/gitlab-runner/config.toml
.
Enregistrer plus rapidement
Il est possible d'enregistrer un Runner plus rapidement en lançant la commande :
gitlab-runner register \
--non-interactive \
--url "https://url/" \
--registration-token "XXX" \
--executor "shell" \
--description "Shell Runner" \
--tag-list "shell" \
--run-untagged="true" \
--locked="false" \
--access-level="not_protected"
Après chaque enregistrement en ligne de commande, il faut relancer le service gitlab-runner : gitlab-runner restart
.
Configuration avancée
Vous avez la possibilité de modifier le fichier de configuration. Voici le lien vers la documentation de GitLab.
Vous pouvez modifier le nombre de jobs lancés simultanément en changeant la valeur de concurrent
. Une fois modifié, il sera nécessaire de redémarrer le GitLab Runner en lançant la commande gitlab-runner restart
, toujours avec l'utilisateur root
.
Tester le GitLab Runner
Pour tester le Runner, il faut créer un projet GitLab dans le groupe où le Runner est enregistré.
Depuis l'interface graphique de GitLab, ajouter un nouveau fichier nommé .gitlab-ci.yml
et enregistrer le.
Insérer le contenu suivant dans le fichier .gitlab-ci.yml
:
stages:
- test
docker:test:
stage: test
tags:
- shell
before_script:
- docker --version
script:
- docker ps
Dès que votre commit
sera effectué, ainsi que le push
vers le dépôt, un pipeline
sera lancé content un job
. Le résultat du job devrait être :
Running with gitlab-runner 13.8.0 (775dd39d)
on Shell Runner XXX
Preparing the "shell" executor
Using Shell executor...
Preparing environment
Running on XXX...
Getting source from Git repository
Fetching changes with git depth set to 50...
Dépôt Git vide initialisé dans /home/gitlab-runner/builds/XXX/0/XXX/.git/
Created fresh repository.
Checking out a694a02f as master...
Skipping Git submodules setup
Executing "step_script" stage of the job script
$ docker --version
Docker version 20.10.2, build 2291f61
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Cleaning up file based variables
Job succeeded