Aller au contenu

Installation d'un runner local

Gitlab offre des runner gratuitement pour être utilisé avec votre code. La version gratuite est cependant limitée à 400 minutes par mois et utilise une infrastructure cloud. C'est amplement suffisant pour la majorité des projets. Cependant, comme notre infrastructure n'est pas sur Internet, les runner de Gitlab n'auront pas accès à nos machines. Il faudra donc installer notre propre runner localement et l'enregistrer auprès de Gitlab.

Note

Ces étapes ont été testées avec Ubuntu 22.04.3

Installation de Docker

Docker sera nécessaire pour démarrer les machines virtuelles qui fera le travail demandé à partir du fichier .gitlab-ci.yml. Chaque travail lancera un ou plusieurs conteneurs Docker.

Pour installer Docker, exécuter le script suivant pour ajouter les repos Docker officiels :

# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

Une fois les repos installés, il sera alors possible d'installer les paquets Docker requis :

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Finalement, on peut tester que tout est fonctionnel en lançant un conteneur de test :

sudo docker run hello-world

Installation de gitlab-runner

gitlab-runner est un programme qui pourra lancer les conteneurs lorsque demandé par Gitlab. Pour installer gitlab-runner, le principe est le même que pour Docker : installer les repos officiels et installer le programme.

curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo 
sudo apt install gitlab-runner

Enregistrer le runner auprès de Gitlab

Chaque runner est attaché à un ou plusieurs repos sur Gitlab. Pour enregistrer un runner, aller dans le repo du projet concerné, ouvrir le menu CI/CD sous le menu Settings et étendre l'option Runners. Plusieurs runners partagés par Gitlab sont déjà à notre disposition. Cependant, comme nous désirons utiliser notre runner, on devra décocher la case Enable shared runners for this project afin de ne pas les utiliser.

Pour enregistrer notre runner, cliquer sur le bouton New project runner.

La page suivante nous permet de configurer les options pour notre runner. Les options suivantes doivent être mises :

  • Operating systems : Linux
  • Tags : Laisser vide
  • Case Run untagged jobs : Cocher

Ensuite, cliquer sur le bouton Create runner.

Note

La commande gitlab-runner register doit être exécutée avec sudo si vous voulez que le service démarre automatiquement.

La dernière étape consiste à enregistrer notre runner dans notre machine virtuelle. Copier et coller la commande affichée à l'écran dans votre machine virtuelle et, lorsque demandé, inscrire les valeurs suivantes :

  • Instance GitLab (ligne 7) : Laisser vide
  • Nom pour le runner (ligne 10) : Laisser vide
  • Nom de l'exécutant (ligne 12) : docker
  • Image docker par défaut (ligne 14) : alpine
sebast@ubuntu-4p8-seb:~$ sudo gitlab-runner register  --url https://gitlab.com  --token glrt-yE6BFzsYWLTz6S8tau9H

Runtime platform                                    arch=amd64 os=linux pid=17124 revision=c72a09b6 version=16.8.0
Running in system-mode.                            

Enter the GitLab instance URL (for example, https://gitlab.com/):
[https://gitlab.com]: 
Verifying runner... is valid                        runner=yE6BFzsYW
Enter a name for the runner. This is stored only in the local config.toml file:
[ubuntu-4p8-seb]: 
Enter an executor: custom, shell, parallels, virtualbox, docker, docker+machine, ssh, docker-windows, kubernetes, docker-autoscaler, instance:
docker
Enter the default Docker image (for example, ruby:2.7):
alpine
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!

Configuration (with the authentication token) was saved in "/etc/gitlab-runner/config.toml" 

sebast@ubuntu-4p8-seb:~$ 

Si tout s'est bien déroulé, le message suivant devrait apparaitre sur la page web de GitLab.

Il sera aussi possible de configurer que votre runner est fonctionnel en retournant dans les paramètres CI/CD - Runners.

Maintenant, lorsque des jobs seront exécutées, elles le seront sur votre serveur virtuel, serveur qui a accès à votre infrastructure local.

Avant (runner de GitLab)

Après (runner local)

Inclure le runner dans d'autres projets

Maintenant que votre runner est ajouté, il sera très facile de l'utiliser pour d'autres projets. En visitant les paramètres CI/CD - Runners d'un autre projet, il sera très facile de l'ajouter sans devoir passer par le processus d'installation à nouveau.

Références

Installation de gitlab-runner sur Ubuntu : https://docs.gitlab.com/runner/install/linux-repository.html

Installation de Docker sur Ubuntu : https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository​