Les variables CI/CD dans GitLab pour gérer vos secrets

Utilisez les variables d'environnement GitLab pour sécuriser vos mots de passe et adapter vos jobs à chaque contexte.

Les variables CI/CD dans GitLab : Dynamiser vos automatisations

Le moteur de personnalisation de vos pipelines

Dans un pipeline automatisé, vous avez souvent besoin de manipuler des informations qui changent d'un projet à l'autre ou d'un environnement à l'autre. Pour gérer cela, GitLab utilise les Variables CI/CD.

Imaginez que vos variables sont des étiquettes intelligentes collées sur votre code. Au lieu d'écrire "en dur" le nom de votre serveur dans vos scripts, vous utilisez une étiquette nommée $CI_ENVIRONMENT_URL. Le système remplacera automatiquement cette étiquette par la bonne valeur au moment de l'exécution. De nos jours, cette flexibilité est la base de l'infrastructure as code.

Visualiser les variables en action

Il est très facile de voir ce que contiennent ces variables en ajoutant une simple commande d'affichage dans votre fichier .gitlab-ci.yml.

Exemple de configuration YAML

test_job:
  stage: test
  script:
    - echo "Je travaille sur la branche $CI_COMMIT_REF_NAME"
    - echo "L'ID du projet est $CI_PROJECT_ID"

Sortie terminal :

Running with gitlab-runner 17.10.0
[...]
$ echo "Je travaille sur la branche $CI_COMMIT_REF_NAME"
Je travaille sur la branche main

$ echo "L'ID du projet est $CI_PROJECT_ID"
L'ID du projet est 456782

Job succeeded

Liste des variables prédéfinies GitLab

GitLab fournit par défaut une liste impressionnante de variables prêtes à l'emploi que vous pouvez retrouver sur la documentation officielle. Voici les plus courantes pour piloter vos builds :

Variable Description
CI_COMMIT_REF_NAME Le nom de la branche (ex: main) ou du tag utilisé pour le build.
CI_COMMIT_SHA L'identifiant complet (hash) du commit en cours de traitement.
CI_JOB_ID L'identifiant unique du job actuel dans GitLab.
CI_PROJECT_DIR Le chemin complet où le dépôt a été cloné sur le Runner.
CI_REGISTRY_IMAGE L'adresse du registre Docker propre à votre projet.
GITLAB_USER_EMAIL L'adresse email de l'utilisateur qui a déclenché le pipeline.

Variables de groupe et de projet

Au-delà des variables automatiques, vous pouvez créer vos propres variables (clés d'API, mots de passe de base de données) directement dans l'interface GitLab pour ne pas les afficher en clair dans votre code. Ces éléments critiques sont généralement gérés par les utilisateurs ayant le rôle Maintainer.

  1. Allez dans Settings > CI/CD.
  2. Dépliez la section Variables.
  3. Cliquez sur Add variable.
Ajout de variables GitLab

"Interface d'ajout de variables personnalisées dans GitLab"

Sécurité : Masked & Protected

Pour vos secrets, utilisez toujours l'option Masked. Cela permet de cacher la valeur de la variable dans les logs de la console (elle sera remplacée par [MASKED]) pour éviter que vos mots de passe ne soient visibles par toute l'équipe.

Conclusion

Les variables CI/CD transforment vos pipelines statiques en outils dynamiques capables de s'adapter à n'importe quelle situation. C'est l'outil indispensable pour gérer vos déploiements sur différents environnements (Staging, Production) sans erreur humaine.

Maintenant que vous savez manipuler les données de vos jobs, nous allons voir comment sécuriser tout cela. Dans le prochain chapitre, nous allons détailler les Permissions spécifiques à GitLab CI.

Espace commentaire

Écrire un commentaire

Rejoignez la discussion

Vous devez être connecté pour poster un message.

22 commentaires

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

Pas de souci. Pense à bien tester tes pipelines sur une branche dédiée avant de push sur main pour éviter les fausses manips.

19/05/2026 à 19:42
thomas-tristan
Membre Actif
Avatar de thomas-tristan
thomas-tristan
Membre Actif

Ok, le problème de scope était bien là. Merci.

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

T'as bien vérifié le scope ? Si elle est définie sur un autre groupe ou projet, elle ne sera pas dispo ici. Check aussi l'option Protected, elle empêche l'accès sur les branches non protégées.

19/05/2026 à 08:21
fdiaz
Membre
Avatar de fdiaz
fdiaz
Membre

J'ai une erreur 'variable not found' sur une variable que j'ai pourtant définie dans Settings > CI/CD.

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

Oui, ça renverra l'email du compte qui a fait le push ou le déclenchement. Si c'est un Deploy Token, c'est différent.

18/05/2026 à 19:03

Est-ce que GITLAB_USER_EMAIL change si c'est un bot qui déclenche le pipeline ?

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

Utilise les artifacts avec un fichier dotenv. C'est la méthode propre :

echo "MA_VAR=valeur" > build.env
job1:
  artifacts:
    reports:
      dotenv: build.env
18/05/2026 à 06:08
fcolas
Membre
Avatar de fcolas
fcolas
Membre

Quelqu'un sait comment passer une variable dynamique d'un job à l'autre ?

18/05/2026 à 01:40
roger28
Membre
Avatar de roger28
roger28
Membre

Merci pour l'astuce sur le CI_COMMIT_SHA. Ça m'a permis de taguer mes images Docker proprement.

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

Utilise toujours le chemin absolu avec $CI_PROJECT_DIR. C'est la seule façon de garantir que ton script ne se plante pas selon le répertoire de travail du runner.

17/05/2026 à 16:46

J'ai besoin d'accéder à CI_PROJECT_DIR pour copier des fichiers de config, mais mon chemin est relatif. C'est risqué ?

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

Utilise l'option Masked dans l'interface GitLab. Si tu veux vérifier que c'est bien masqué, fais juste un echo $MA_VARIABLE dans le script, GitLab le remplacera par [MASKED].

17/05/2026 à 05:44

Comment je peux débugger les variables sans les afficher en clair dans les logs ? J'ai peur de leak mes API keys.

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

Regarde les permissions de ton registry. Ton projet a peut-être un accès limité. Vérifie aussi que ton runner est bien tagué sur le projet.

16/05/2026 à 20:07
ibouvet
Membre
Avatar de ibouvet
ibouvet
Membre

Oui, je fais bien docker login -u $CI_REGISTRY_USER -p $CI_JOB_TOKEN $CI_REGISTRY. Toujours 403.

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

Vous utilisez bien $CI_REGISTRY_USER et $CI_REGISTRY_PASSWORD pour le login ? Ne jamais mettre de credentials en dur.

16/05/2026 à 04:25

Même problème ici. J'ai l'impression que le token n'est pas reconnu.

15/05/2026 à 22:39
corinne86
Membre Actif
Avatar de corinne86
corinne86
Membre Actif

J'essaie d'utiliser CI_REGISTRY_IMAGE pour builder mon image Docker mais mon runner refuse le login. C'est normal ?

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

Ajoute ça dans ton .gitlab-ci.yml pour forcer l'inclusion des variables :

variables:
  GIT_STRATEGY: fetch
15/05/2026 à 10:13

Effectivement, je suis en merge request. Je dois faire quoi pour corriger ça ?

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

Vérifie ton runner. Si tu es en detached merge request pipeline, certaines variables ne sont pas injectées par défaut. T'as quoi dans tes logs ?

14/05/2026 à 23:08

Super article. Par contre j'ai un souci avec CI_COMMIT_REF_NAME, il me renvoie rien du tout dans mon script shell. Une idée ?

14/05/2026 à 19:01

Rejoindre la communauté

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

S'inscrire