🖨️ Version PDF
À la fin de ce module, vous serez capable de :
Un Runner est un agent qui exécute les tâches définies dans tes pipelines CI/CD (tests, builds, déploiements, etc.). Sans Runner, le pipeline reste “sur le papier” : c’est le Runner qui fait le travail concret sur une machine !
exécute les tâches définies dans tes pipelines
Version métaphorique :
Imaginez que le pipeline CI/CD est une recette de cuisine. Le Runner, c’est le cuisinier qui lit la recette et prépare le plat. Sans cuisinier (Runner), la recette (pipeline) ne sert à rien : rien n’est cuisiné (exécuté) !
Un Runner permet :
Et heurement, GitLab fournit des Runners partagés par défaut, mais l’on peut en installer pour plus de contrôle.
Pour bien comprendre son rôle, lorsque l’on pushes du code, le Runner :
pushes du code
Donc, sans Runner, rien ne se passe !
.gitlab-ci.yml
Un Runner peut utiliser différents executors, c’est-à-dire des modes d’exécution :
executors
Il faut téléchargez le binaire GitLab Runner : https://gitlab-runner-downloads.s3.amazonaws.com/latest/index.html
Ensuite, ouvrez PowerShell en administrateur et exécutez :
mkdir C:\GitLab-Runner cd C:\GitLab-Runner Invoke-WebRequest -Uri https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-windows-amd64.exe -OutFile gitlab-runner.exe
Enregistrez le Runner auprès de votre projet GitLab
Copiez l’URL et le token d’enregistrement
Dans PowerShell, tapez : .\gitlab-runner.exe register et saisissez les différentes valeurs demandées :
.\gitlab-runner.exe register
Enter the GitLab instance URL: https://gitlab.com/ Enter the registration token: <votre_token> Enter a description: RunnerWindows Enter tags: windows, shell Enter executor: shell
Installez le service Windows :
```powershell .\gitlab-runner.exe install .\gitlab-runner.exe start ``
Vérifiez dans GitLab –> CI/CD –> Runners : le vôtre doit apparaître en vert !
Installez le package officiel
sudo apt update sudo apt install -y curl curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash sudo apt install gitlab-runner -y
Enregistrez le Runner : sudo gitlab-runner register et saisissez les différentes valeurs demandées :
sudo gitlab-runner register
Enter the GitLab instance URL: https://gitlab.com/ Enter the registration token: <votre_token> Enter a description: RunnerLinux Enter tags: linux, shell Enter executor: shell
Démarrez le service
sudo systemctl enable gitlab-runner sudo systemctl start gitlab-runner sudo systemctl status gitlab-runner
runner-test
stages: - test test-runner: stage: test script: - echo "Bonjour depuis mon Runner local !" - echo "Le système d’exploitation est :" - uname -a || ver tags: - windows - linux
GitLab déclenche automatiquement le pipeline et attribue le job à votre Runner correspondant (selon le tag).
Résultat attendu :
Les tags permettent d’indiquer à GitLab quel Runner doit exécuter un job.
Les tags permettent d’indiquer à GitLab quel Runner doit exécuter un job
tags: linux, docker
tags: [docker]
Les tags sont comme des étiquettes associés à un job. Gitlab choisit le bon Runner selon l’étiquette qu’il lit sur le job.
Objectif : Faire exécuter un job différent selon le système d’exploitation.
stages: - build build-windows: stage: build script: - echo "Compilation sous Windows" - dir tags: - windows build-linux: stage: build script: - echo "Compilation sous Linux" - ls -la tags: - linux
build-windows
build-linux
Récapitulatif
Vous comprenez que sans Runner il n’y a pas d’automatisation ! Le Runner est le moteur invisible qui fait vivre la CI/CD.
Objectif : installer un Runner qui exécute vos jobs dans des conteneurs Docker
sudo apt install docker.io -y
sudo gitlab-runner register --executor docker
Répondez :
Enter the default Docker image: alpine:latest Enter tags: docker
Créer un job de test
docker-job: stage: test image: alpine:latest script: - echo "Je tourne dans un conteneur Docker" tags: - docker
Résultat attendu : GitLab télécharge l’image alpine et exécute le job dans un conteneur.
Le Runner est le lien entre GitLab et votre machine. Il écoute GitLab, reçoit les ordres, et exécute les jobs.
Vous pouvez en créer plusieurs, les taguer, les sécuriser et les isoler. Sans Runners, vos pipelines resteraient des partitions jamais jouées !
Avec eux, votre automatisation DevOps devient une symphonie complète.
Objectif : Mettre en place un Runner partagé sur une machine Linux (ou serveur Ubuntu) pour exécuter automatiquement les pipelines de plusieurs projets étudiants, avec isolation Docker pour chaque job.
┌──────────────────────────────────┐ │ GITLAB SERVER │ │ (héberge les dépôts et jobs) │ └──────────────────────────────────┘ │ ▼ ┌──────────────────────────────────┐ │ GITLAB RUNNER │ │ (sur un serveur partagé Linux) │ ├──────────────────────────────────┤ │ Executor : Docker │ │ Image de base : alpine:latest │ │ Tags : docker, shared, linux │ └──────────────────────────────────┘ │ ▼ ┌──────────────────────────────────┐ │ Conteneurs Docker isolés │ │ (1 conteneur par job lancé) │ └──────────────────────────────────┘ ---
sudo apt install docker.io -y sudo systemctl enable docker sudo systemctl start docker
Installer GitLab Runner
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash sudo apt install gitlab-runner -y
Enregistrer le Runner partagé : sudo gitlab-runner register
Enter the GitLab instance URL: https://gitlab.com/ Enter the registration token: <token du groupe GitLab> Enter a description: RunnerDockerPartagé Enter tags: docker, shared, linux Enter executor: docker Enter the default Docker image: alpine:latest
(Utiliser le token de groupe permet de partager le Runner avec tous les projets du même groupe GitLab, pensez-y !)
sudo gitlab-runner list
Listing configured runners ConfigFile=/etc/gitlab-runner/config.toml RunnerDockerPartagé Executor=docker Token=XXXX URL=https://gitlab.com/
Le Runner doit aussi apparaître dans GitLab –> Settings –> CI/CD –> Runners (en vert).
Exemple de `.gitlab-ci.yml commun aux apprenant.e.s
stages: - test test-environnement: stage: test image: alpine:latest script: - echo "Bonjour depuis le Runner partagé !" - echo "Ce job tourne dans un conteneur isolé" - uname -a tags: - docker
Si on reprend nos métaphores :
/etc/gitlab-runner/config.toml
Exemple :
[runners.docker] tls_verify = false image = "alpine:latest" privileged = false disable_cache = false volumes = ["/cache"]
Vérification finale
Job A --> Exécuté dans conteneur runner-xxxx Job B --> Exécuté dans conteneur runner-yyyy
linux
docker
windows
Vous pouvez tester un Runner Docker-in-Docker (dind) pour construire des images dans les pipelines, créer un Runner Windows pour des jobs PowerShell ou bien utiliser des Runners autoscalés sur le cloud (GitLab SaaS + AWS).
Le Runner est le cœur battant de GitLab CI/CD. Sans lui, aucun pipeline ne s’exécute. Avec lui, vos scripts deviennent des actions automatiques, fiables et traçables ! GitLab est le chef d’orchestre, le fichier .gitlab-ci.yml est la partition et le Runner est le musicien qui fait vivre la musique DevOps !
Auteur : Philippe Bouget