Introduction Maîtriser l'automatisation avec le guide complet GitLab CI/CD

Démarrez avec l'Intégration et Déploiement Continus. Configurez vos pipelines GitLab via le fichier .gitlab-ci.yml.

Maîtriser GitLab CI/CD: Introduction

L'Intégration et le Déploiement Continus (CI/CD)

Dans le cycle de développement moderne, l'efficacité repose sur deux piliers indissociables : le CI (Continuous Integration) et le CD (Continuous Deployment). GitLab CI automatise la gestion et les tests de vos projets à chaque envoi de code, tandis que le CD prend le relais pour placer automatiquement ces changements validés en production.

Imaginez une chaîne de montage automobile ultra-moderne. Le CI est le scanner laser qui vérifie chaque soudure en temps réel. Le CD est le bras robotisé qui place la voiture finie sur le camion de livraison dès qu'elle est validée. Grâce à ce système, vous détectez les erreurs immédiatement et déployez sur la branche main en toute sérénité.

Le fichier .gitlab-ci.yml : Le Chef d'Orchestre

Qu'est-ce que ce fichier et pourquoi est-il vital ?

Le fichier .gitlab-ci.yml est le cerveau de votre automatisation. C'est un fichier texte au format YAML que vous devez impérativement placer à la racine de votre dépôt. Sans lui, GitLab n'est qu'un simple espace de stockage, avec lui, il devient une usine logicielle intelligente.

C'est une recette de cuisine technique : dès que vous effectuez un push, GitLab lit ce fichier et délègue les instructions aux GitLab Runners. Il permet de standardiser vos méthodes de travail : peu importe l'ordinateur du développeur, le code sera toujours testé et déployé de la même manière.

Flux de travail CI avec GitLab

"Visualisation du flux de travail CI avec GitLab"

Anatomie du pipeline : Stages et Jobs

Le fonctionnement de votre pipeline CI/CD repose sur une hiérarchie stricte définie dans le fichier :

  • Les Stages (Étapes) : Ils définissent la chronologie (ex: d'abord on build, ensuite on teste). Un stage ne démarre que si le précédent est réussi.
  • Les Jobs (Tâches) : Ce sont les scripts réels (ex: npm test). Plusieurs jobs peuvent tourner en parallèle au sein d'un même stage pour gagner du temps.

Implémentation pratique du pipeline

Voici une configuration YAML complète pour une application Node.js :

stages:
  - build
  - test
  - deploy

job_compilation:
  stage: build
  image: node:22-alpine
  script:
    - npm ci
    - npm run build
  artifacts:
    paths:
      - dist/

job_tests_unitaires:
  stage: test
  image: node:22-alpine
  script:
    - npm test

job_deploiement_prod:
  stage: deploy
  image: alpine:latest
  script:
    - echo "Déploiement sur le serveur de production..."
  rules:
    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH

Le conseil du Pro

Le format YAML est extrêmement sensible aux indentations. Utilisez l'outil CI Lint intégré à GitLab (dans le menu CI/CD > Editor) pour valider votre syntaxe avant de commiter.

Les Stages : La chronologie de votre projet

La directive stages est la colonne vertébrale de votre automatisation. Elle définit l'ordre chronologique dans lequel vos tâches vont s'exécuter. Dans votre exemple, nous avons trois étapes clés : build (construction), test et deploy (déploiement).

Imaginez une chaîne de montage automobile. Les stages garantissent que l'on ne peint pas la voiture (déploiement) avant d'avoir vérifié si le moteur fonctionne (test) et on ne teste pas le moteur avant de l'avoir assemblé (build). Si une étape échoue, GitLab arrête tout immédiatement pour protéger votre production.

Le Job : L'ouvrier spécialisé

Un job est une unité de travail concrète. Dans votre code, job_compilation ou job_tests_unitaires sont des jobs. Chaque job doit être rattaché à un stage.

  • image : C'est l'environnement de travail (le conteneur Docker). Utiliser node:22-alpine garantit que votre code s'exécute avec la version exacte de Node.js dont il a besoin.
  • script : C'est le cœur de l'action. Ce sont les commandes terminal que le Runner va taper à votre place. La commande npm ci installe les dépendances de manière rapide et ultra-fiable.

Les Artifacts : Transmettre les résultats

Par défaut, chaque job démarre dans un environnement totalement vide. Lorsqu'un job de compilation crée un dossier dist/, ce dossier disparaît dès que le job est fini.

Les artifacts permettent de "sauver" des fichiers pour les transmettre aux jobs suivants. Ici, le dossier de compilation est conservé pour que le job de déploiement puisse l'utiliser plus tard.

Les Rules : L'intelligence conditionnelle

Le mot-clé rules apporte une intelligence de décision à votre pipeline. Vous ne voulez pas déployer sur votre serveur de production à chaque fois qu'un développeur fait un test sur une petite branche isolée.

Dans votre code, la règle utilise des Variables CI/CD prédéfinies :

if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH

Cela signifie : "N'exécute ce job de déploiement QUE si le code est poussé sur la branche par défaut (généralement main)". C'est votre sécurité anti-erreur humaine.

Information

Ne vous inquiétez pas si certains concepts vous paraissent encore flous : ce n'est qu'une première introduction. Nous reviendrons sur chacun de ces points bien plus en profondeur dans les chapitres suivants.

Exécution du pipeline

Voici ce que verra un développeur dans sa console GitLab lors du lancement de ce pipeline après un push sur la branche principale.

Sortie terminal - Statut global :

Pipeline #458712 started for branch 'main'

[Stage: build]
- job_compilation: RUNNING...
  $ npm ci
  $ npm run build
  Uploading artifacts... dist/ (2.4MB)
  Job succeeded

[Stage: test]
- job_tests_unitaires: RUNNING...
  $ npm test
  7 runs, 15 assertions, 0 failures
  Job succeeded

[Stage: deploy]
- job_deploiement_prod: RUNNING...
  $ echo "Déploiement sur le serveur de production..."
  Job succeeded

Pipeline succeeded in 2m 54s

Conclusion

Le couple CI/CD et son fichier .gitlab-ci.yml transforment radicalement votre quotidien de développeur. Vous passez d'un mode manuel stressant à un flux automatisé, fiable et rapide.

Cependant, pour que votre pipeline puisse interagir avec vos serveurs en toute sécurité, il ne faut jamais écrire vos mots de passe en clair dans ce fichier. Dans le prochain chapitre, nous allons apprendre à utiliser les Variables CI/CD pour protéger vos secrets.

Espace commentaire

Écrire un commentaire

Rejoignez la discussion

Vous devez être connecté pour poster un message.

28 commentaires

thomas-faure
Membre Actif
Avatar de thomas-faure
thomas-faure
Membre Actif

J'ai un souci avec les artifacts. Mon dossier dist/ n'est pas trouvé par le job de déploiement. Je l'ai pourtant bien défini.

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

T'as vérifié ton package-lock.json ? Si tu utilises npm ci, il faut qu'il soit présent et cohérent. Si tu as juste un package.json, utilise npm install à la place.

14/05/2026 à 02:16
arthur04
Membre Actif
Avatar de arthur04
arthur04
Membre Actif

Super article. Par contre, mon job job_compilation échoue systématiquement avec une erreur npm alors que ça passe en local. Une idée ?

13/05/2026 à 19:37

Rejoindre la communauté

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

S'inscrire