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 :
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
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