Configurer les GitLab Runners comme moteurs de votre CI/CD

Installez, enregistrez et optimisez vos GitLab Runners pour exécuter efficacement vos jobs de test automatisés.

Configurer les GitLab Runners : Le moteur de vos automatisations

Le moteur de vos automatisations

Un GitLab Runner est une instance d'exécution qui traite les tâches (jobs) envoyées par GitLab. Comme nous l'avons vu précédemment, GitLab est le "cerveau" qui stocke le code et les Runners sont les bras qui compilent, testent et déploient vos applications.

De nos jours, la flexibilité est totale : vous pouvez installer des Runners sur vos propres serveurs (Ubuntu), sur des machines Windows, ou utiliser des instances éphémères dans le cloud. Une fois installé, un Runner doit être enregistré auprès de votre instance GitLab pour commencer à travailler.

Information importante

Pour rappel, nous avons déjà configuré les Runners lors de la mise en place initiale de notre environnement GitLab. Si vous n'avez pas encore effectué cette installation ou si votre Runner n'est pas actif, je vous invite à revenir sur les chapitres précédents pour finaliser cette étape avant de poursuivre.

Types de Runners : Partagés vs Spécifiques

Selon vos besoins techniques et de sécurité, vous pouvez choisir entre deux grandes catégories de Runners.

Les Runners Partagés (Shared Runners)

Ces machines sont disponibles pour tous les projets de votre instance GitLab. Ils sont parfaits pour les tâches génériques (tests unitaires, analyse de code) qui ne nécessitent pas de configuration matérielle particulière. Ils permettent de centraliser la maintenance : une seule mise à jour du Runner profite à toute l'équipe.

Les Runners Spécifiques (Specific Runners)

Ils sont dédiés à un seul projet. C'est le choix idéal si votre application nécessite des dépendances lourdes, un accès matériel spécifique (GPU) ou des clés de sécurité que vous ne souhaitez pas partager. Ils fonctionnent sur le principe FIFO (First In, First Out) : le premier job arrivé est le premier servi.

Vérifier l'état d'un Runner enregistré

Information

Ces commandes de diagnostic doivent être tapées directement sur la machine physique (ou virtuelle) qui héberge le Runner, et non sur votre serveur GitLab principal.

Pour vous assurer que le service est bien actif et prêt à recevoir des ordres, utilisez la commande suivante :

gitlab-runner status

Résultat :

Runtime platform                                    arch=amd64 os=linux pid=4521 revision=de7731d1 version=17.10.0
gitlab-runner: Service is running

Si vous voulez voir tous les exécuteurs enregistrés sur cette machine spécifique, listez-les avec :

gitlab-runner list

Résultat :

Listing configured runners                          ConfigFile=/etc/gitlab-runner/config.toml
Runner-Production-01                                Executor=docker Token=glrt-tXy87PaL URL=https://gitlab.example.com

Le conseil du SysAdmin

Si le statut affiche Service is running, cela signifie que votre "ouvrier" est bien réveillé. Si vous voulez vérifier s'il est bien connecté au "cerveau", c'est dans l'interface web de GitLab (Settings > CI/CD > Runners) qu'il faudra regarder si la pastille est verte.

Verrouiller un Runner spécifique

Pour éviter qu'un Runner dédié ne soit activé par erreur sur d'autres projets, vous pouvez le "verrouiller".

Rendez-vous dans votre projet, puis dans Settings > CI/CD. Dépliez la section Runners. Vous y verrez vos Runners activés. Cliquez sur l'icône du crayon (éditer) à côté du Runner concerné.

Édition d'un Runner dans GitLab

Sur l'écran de configuration, cochez l'option Lock to current projects et validez avec Save changes. Ce Runner ne pourra désormais plus être assigné à un autre dépôt sans une action manuelle de votre part.

Option de verrouillage du Runner

Sécurité : Les Runners Protégés (Protected)

De nos jours, la sécurité des déploiements est prioritaire. Un Runner Protégé ne peut exécuter des jobs que sur des branches elles-mêmes protégées, comme la branche main.

C'est une protection cruciale : cela empêche un utilisateur malveillant de créer une branche de test pour tenter d'extraire des secrets de production (mots de passe, clés d'API) via le Runner. Pour l'activer, suivez la même procédure d'édition que pour le verrouillage et cochez Protected.

Activation du mode Protected sur un Runner

"Un Runner protégé est le gardien de votre branche main"

Qu'est-ce qu'une branche protégée ?

Par défaut, n'importe quel utilisateur ayant le rôle Developer peut pousser du code ou supprimer une branche sur un dépôt. Dans un contexte professionnel, laisser la branche principale (souvent main) sans surveillance est un risque majeur pour la stabilité de la production.

Une branche protégée est une branche sur laquelle GitLab applique des restrictions de sécurité strictes. Elle permet de garantir que :

  • Le Push direct est interdit : Personne ne peut envoyer de code directement sur la branche sans passer par une Merge Request validée.
  • La suppression est impossible : Même par erreur, la branche ne peut pas être effacée du serveur.
  • Le contrôle des fusions : Seuls les utilisateurs ayant le rôle Maintainer (ou des rôles spécifiques autorisés) peuvent valider l'intégration du code.

Comment activer la protection d'une branche ?

GitLab protège généralement la branche par défaut lors de la création du projet, mais vous pouvez configurer ces règles manuellement :

  1. Rendez-vous dans votre projet GitLab.
  2. Dans le menu latéral gauche, allez dans Settings > Repository.
  3. Cherchez la section Protected branches et cliquez sur le bouton Expand.
  4. Sélectionnez la branche à protéger (ex: main ou develop).
  5. Définissez qui a le droit de Merge et qui a le droit de Push.
  6. Cliquez sur le bouton Protect pour valider.
Activer les branches protégées

"Activer les branches protégées"

Configurer et utiliser les Tags GitLab Runners

Pourquoi utiliser des Tags ?

Dans une infrastructure DevOps complète, vous disposez souvent de plusieurs Runners avec des capacités différentes. Les Tags (étiquettes) sont le mécanisme qui permet de faire correspondre un job spécifique avec le Runner le plus adapté.

Sans tags, GitLab envoie les jobs au premier Runner disponible qui accepte les jobs sans étiquette, ce qui peut mener à des échecs.

Comment configurer des Tags sur un Runner ?

La gestion des tags a radicalement changé. Elle se fait désormais en amont, directement depuis l'interface web de GitLab, avant d'enregistrer physiquement votre machine :

  1. Création du Runner sur GitLab :
    • Allez dans Settings > CI/CD > Runners.
    • Cliquez sur le bouton bleu New project runner.
    • Dans la section Tags, saisissez vos mots-clés (ex: docker, linux).
    • Cochez éventuellement Run untagged jobs si vous voulez qu'il accepte aussi les tâches sans étiquette.
    • Cliquez sur Create runner.
  2. Enregistrement sur votre machine : GitLab vous fournira alors une commande toute prête avec un jeton (token). Copiez-la et collez-la dans le terminal de votre serveur (ou PC Windows). Les tags définis à l'étape 1 y seront automatiquement rattachés.

Information

Pour rappel, nous avons déjà effectué cette procédure lors de l'installation initiale au début de ce cours. Si votre Runner est déjà en ligne, vous pouvez modifier ses tags à tout moment en cliquant sur l'icône du crayon dans la liste de vos Runners sur GitLab.

Comment utiliser les Tags dans votre pipeline ?

Une fois vos Runners étiquetés, vous devez indiquer à votre fichier .gitlab-ci.yml quel Runner utiliser pour chaque job grâce au mot-clé tags.

Exemple de configuration YAML :

stages:
  - test
  - deploy

job_linux:
  stage: test
  tags:
    - docker  # Ce job cherchera un Runner possédant le tag "docker"
  script:
    - echo "Exécution sur Linux Docker"

job_windows:
  stage: test
  tags:
    - windows # Ce job attendra qu'un Runner Windows soit disponible
  script:
    - echo "Exécution sur serveur Windows"

Règle de sélection

Pour qu'un Runner accepte un job, il doit posséder tous les tags listés dans le job. Si vous mettez les tags "docker" et "linux", un Runner qui n'a que le tag "docker" ignorera la tâche.

Gérer les jobs sans étiquettes (Untagged)

Par défaut, les jobs dans votre fichier .gitlab-ci.yml peuvent utiliser des tags pour cibler un Runner précis. Mais que faire si un job n'a pas de tag ?

Vous pouvez configurer un Runner pour qu'il accepte de prendre en charge ces jobs "orphelins". Dans l'écran d'édition du Runner, cochez l'option Run untagged jobs.

Option Run untagged jobs

"Utile pour s'assurer que tous les petits jobs de test sont bien exécutés"

Le conseil du SysAdmin

Il est recommandé de toujours utiliser des Tags pour vos Runners. Cela permet de piloter précisément quel environnement de travail est utilisé pour chaque étape de votre pipeline.

Conclusion

La configuration des Runners est le dernier maillon technique pour rendre votre forge logicielle totalement autonome. Vous savez maintenant isoler vos ressources, sécuriser vos déploiements sur main et gérer la distribution des tâches.

De plus, l'utilisation rigoureuse des Tags est une pratique de "Clean CI". Elle garantit que chaque tâche s'exécute dans l'environnement prévu.

Votre infrastructure est prête. Dans le prochain chapitre, nous allons voir comment passer à la vitesse supérieure avec les usages avancés de GitLab CI.

Espace commentaire

Écrire un commentaire

Rejoignez la discussion

Vous devez être connecté pour poster un message.

29 commentaires

ajdaini-hatim
Auteur Rédacteur Secouriste Actif
Avatar de ajdaini-hatim
ajdaini-hatim
Auteur Rédacteur Secouriste Actif

Au fait, pour ceux qui ont des erreurs de timeout, vérifiez votre fichier config.toml et augmentez le request_concurrency si nécessaire.

23/05/2026 à 19:45
ajdaini-hatim
Auteur Rédacteur Secouriste Actif
Avatar de ajdaini-hatim
ajdaini-hatim
Auteur Rédacteur Secouriste Actif

Oui, si la branche source est protégée, les mêmes règles de sécurité s'appliquent. C'est du gros verrouillage pour éviter les fuites.

23/05/2026 à 12:45
xbertin
Membre
Avatar de xbertin
xbertin
Membre

Est-ce que le mode "Protected" s'applique aussi aux merges requests ?

23/05/2026 à 06:56
ajdaini-hatim
Auteur Rédacteur Secouriste Actif
Avatar de ajdaini-hatim
ajdaini-hatim
Auteur Rédacteur Secouriste Actif

T'as dû oublier l'étape de l'enregistrement. Lance gitlab-runner register pour lier ton binaire à ton instance GitLab.

23/05/2026 à 02:10
isaac39
Membre Actif
Avatar de isaac39
isaac39
Membre Actif

Le gitlab-runner list me sort rien, pourtant il est bien installé.

22/05/2026 à 20:12
ajdaini-hatim
Auteur Rédacteur Secouriste Actif
Avatar de ajdaini-hatim
ajdaini-hatim
Auteur Rédacteur Secouriste Actif

Ajoute l'utilisateur gitlab-runner au groupe docker sur ta machine :

sudo usermod -aG docker gitlab-runner
sudo systemctl restart gitlab-runner
22/05/2026 à 13:10
sbaron
Membre Actif
Avatar de sbaron
sbaron
Membre Actif

J'ai un souci de permissions docker. Le runner me dit "permission denied" quand il essaie de pull une image.

22/05/2026 à 08:17
ajdaini-hatim
Auteur Rédacteur Secouriste Actif
Avatar de ajdaini-hatim
ajdaini-hatim
Auteur Rédacteur Secouriste Actif

Vérifie que ton Runner est bien assigné au projet dans l'interface. Parfois, il faut cliquer sur le bouton "Enable for this project" manuellement.

22/05/2026 à 03:22
gtoussaint
Membre Actif
Avatar de gtoussaint
gtoussaint
Membre Actif

Merci pour le tuto, ça m'a sauvé. Par contre, mon runner ne veut pas exécuter les jobs "untagged" malgré l'option cochée.

21/05/2026 à 21:35
ajdaini-hatim
Auteur Rédacteur Secouriste Actif
Avatar de ajdaini-hatim
ajdaini-hatim
Auteur Rédacteur Secouriste Actif

Oui, va dans l'interface web, clique sur le crayon à côté du runner, change les tags et enregistre. Pas besoin de toucher à la machine physique.

21/05/2026 à 16:26
elodie65
Membre
Avatar de elodie65
elodie65
Membre

Est-ce que je peux changer les tags d'un runner sans le supprimer et le refaire ?

21/05/2026 à 08:53
ajdaini-hatim
Auteur Rédacteur Secouriste Actif
Avatar de ajdaini-hatim
ajdaini-hatim
Auteur Rédacteur Secouriste Actif

Limite le nombre de jobs concurrents dans ton fichier de conf. Modifie la valeur concurrent en haut du fichier :

concurrent = 2
check_interval = 0
21/05/2026 à 02:10

Comment je peux monitorer la charge de mon runner ? Il sature dès que j'ai trois builds en parallèle.

20/05/2026 à 18:12
ajdaini-hatim
Auteur Rédacteur Secouriste Actif
Avatar de ajdaini-hatim
ajdaini-hatim
Auteur Rédacteur Secouriste Actif

Oui, carrément. Tu peux en enregistrer autant que tu veux, ils seront tous listés dans ton config.toml.

20/05/2026 à 12:29
ybecker
Membre
Avatar de ybecker
ybecker
Membre

Peut-on avoir plusieurs runners sur la même machine ?

20/05/2026 à 05:42
ajdaini-hatim
Auteur Rédacteur Secouriste Actif
Avatar de ajdaini-hatim
ajdaini-hatim
Auteur Rédacteur Secouriste Actif

Vérifie ton architecture avec uname -a. Si t'es en 32 bits, t'auras des problèmes. Il faut absolument du 64 bits pour les versions récentes.

19/05/2026 à 23:45
sboyer
Membre
Avatar de sboyer
sboyer
Membre

Je galère avec l'installation sur une vieille Debian. Le binaire gitlab-runner ne veut pas se lancer.

19/05/2026 à 18:17
ajdaini-hatim
Auteur Rédacteur Secouriste Actif
Avatar de ajdaini-hatim
ajdaini-hatim
Auteur Rédacteur Secouriste Actif

Regarde si tu n'as pas activé le mode "Protected" sur tes variables alors que ton runner n'est pas sur une branche protégée. Ça bloque tout.

19/05/2026 à 14:06
maggie51
Membre
Avatar de maggie51
maggie51
Membre

Mon runner tourne bien, mais il ne voit pas les variables d'environnement que j'ai définies dans le projet. Une idée ?

19/05/2026 à 07:28
ajdaini-hatim
Auteur Rédacteur Secouriste Actif
Avatar de ajdaini-hatim
ajdaini-hatim
Auteur Rédacteur Secouriste Actif

Non, rien à voir. Le verrouillage empêche le runner d'être utilisé par d'autres projets sur ton instance. Les tags, c'est pour router le job vers la bonne archi.

18/05/2026 à 23:36
xchauvin
Membre
Avatar de xchauvin
xchauvin
Membre

C'est quoi la diff entre lock to current projects et les tags ? J'ai l'impression que ça fait la même chose.

18/05/2026 à 18:36
ajdaini-hatim
Auteur Rédacteur Secouriste Actif
Avatar de ajdaini-hatim
ajdaini-hatim
Auteur Rédacteur Secouriste Actif

T'as peut-être un souci de réseau ou de certificat. Essaie de vérifier ton config.toml pour voir si l'URL est correcte.

18/05/2026 à 12:11

J'ai une erreur 403 quand j'essaie de register mon runner. Le token est bien celui donné par l'interface.

18/05/2026 à 05:05
ajdaini-hatim
Auteur Rédacteur Secouriste Actif
Avatar de ajdaini-hatim
ajdaini-hatim
Auteur Rédacteur Secouriste Actif

Utilise des tags spécifiques et désactive "Run untagged jobs" dans la config de tes runners partagés sur GitLab. Sinon, il prendra tout ce qui traîne.

17/05/2026 à 23:20
marin-anouk
Membre
Avatar de marin-anouk
marin-anouk
Membre

Comment on fait pour forcer un job à ne pas utiliser les runners partagés ? Je veux que mon build tourne uniquement sur ma machine locale.

17/05/2026 à 17:30

Rejoindre la communauté

Recevoir les derniers articles gratuitement en créant un compte !

S'inscrire
An Error Occurred: Internal Server Error

Oops! An Error Occurred

The server returned a "500 Internal Server Error".

Something is broken. Please let us know what you were doing when this error occurred. We will fix it as soon as possible. Sorry for any inconvenience caused.