DevOpsFacile
AccueilParcours de formationCertificationsModulesCheat SheetÀ Propos
DevOpsFacile

Une plateforme d'apprentissage complète pour maîtriser les pratiques DevOps modernes, du débutant à l'expert.

contact@devopsfacile.fr

Formation

  • Parcours de formation
  • Modules

Informations

  • À Propos
  • Conditions d'utilisation
  • Confidentialité
  • Mentions légales

© 2026 DevOps Facile. Tous droits réservés.

Fait avec pour la communauté DevOps

ModulesCréer son premier pipeline CI/CD avec GitHub Actions06 - Projet Capstone : Créer un pipeline CI/CD complet avec GitHub Actions

Détails

  • 40 minutes
  • Intermédiaire

Objectifs

  • Créer un workflow GitHub Actions from scratch
  • Automatiser les tests sur chaque push et pull request
  • Utiliser des actions du Marketplace (actions/checkout, actions/setup-node)
  • Intégrer un build Docker dans le pipeline
Module Créer son premier pipeline CI/CD avec GitHub Actions

Exercice 06 : Projet Capstone - Créer un Pipeline CI/CD Complet avec GitHub Actions

🎯 Objectifs

À la fin de cet exercice, vous serez capable de :

  • ✅ Créer un fichier .github/workflows/ci.yml complet
  • ✅ Configurer les déclencheurs on: push et on: pull_request
  • ✅ Utiliser actions/checkout et actions/setup-node du Marketplace
  • ✅ Automatiser les tests sur chaque changement de code
  • ✅ Construire une image Docker dans le pipeline CI

Durée estimée : 40 minutes

Difficulté : ⭐⭐⭐☆☆ (Intermédiaire)

Prérequis :

  • Un repository GitHub avec du code
  • Module CI/CD Débutant complété
  • Notions GitHub Actions (workflows, jobs, steps, actions)

📖 Contexte

Votre équipe veut s'assurer que chaque modification de code est automatiquement testée et que l'image Docker peut être construite sans erreur. Vous allez créer le premier pipeline CI de l'entreprise avec GitHub Actions.


📋 Énoncé

Créez un workflow GitHub Actions qui se déclenche sur chaque push et pull request, exécute les tests d'une application Node.js, et construit une image Docker.


🧭 Déroulement de l'exercice

Tâche 1 : Initialiser le repository

Créez un repository GitHub devops-ci-demo et initialisez-le avec une application Node.js minimale : server.js, server.test.js, package.json (avec jest et une commande test), et un Dockerfile basique.

Indice : Le package.json doit avoir "test": "jest" dans scripts. GitHub Actions clonersa votre repo et lancera cette commande.

Vérification : git push origin main pousse le code initial. L'onglet "Actions" de GitHub est visible.


Tâche 2 : Créer la structure du workflow

Créez le fichier .github/workflows/ci.yml. Définissez le nom du workflow (CI Pipeline) et les déclencheurs : sur push vers les branches main et develop, et sur tout pull_request.

Indice :

`yaml

on:

push:

branches: [main, develop]

pull_request:

`

pull_request sans branches s'applique à toutes les branches.

Vérification : Le fichier .github/workflows/ci.yml existe. Sa structure YAML est valide.


Tâche 3 : Ajouter le job de tests

Dans le workflow, ajoutez un job test qui :

  1. Tourne sur ubuntu-latest
  2. Utilise actions/checkout@v4 pour récupérer le code
  3. Utilise actions/setup-node@v4 avec Node.js version 20 et cache npm
  4. Installe les dépendances avec npm ci
  5. Lance les tests avec npm test

Indice : actions/setup-node@v4 accepte node-version: '20' et cache: 'npm'. Le cache évite de re-télécharger node_modules à chaque run.

Vérification : Après git push, l'onglet Actions montre le workflow qui s'exécute et le job test passe au vert.


Tâche 4 : Ajouter le job de build Docker

Ajoutez un second job build-docker qui :

  1. Tourne sur ubuntu-latest
  2. Dépend du job test (s'exécute seulement si les tests passent)
  3. Checkout le code
  4. Construit l'image Docker avec le tag devops-ci-demo:${{ github.sha }}
  5. N'est exécuté que sur la branche main

Indice : needs: test crée la dépendance entre jobs. if: github.ref == 'refs/heads/main' conditionne l'exécution. ${{ github.sha }} est le hash du commit - un tag unique et traçable.

Vérification : Sur un push vers main, les deux jobs s'exécutent en séquence. Sur une PR, seul test s'exécute.


Tâche 5 : Ajouter un récapitulatif de statut

Ajoutez une étape finale dans le job test qui affiche un résumé dans les logs : le nom du workflow, la branche, le SHA du commit, et l'acteur (utilisateur qui a déclenché le workflow).

Indice : GitHub Actions expose des variables de contexte : ${{ github.workflow }}, ${{ github.ref_name }}, ${{ github.sha }}, ${{ github.actor }}. Utilisez run: echo "..." ou echo "..." >> $GITHUB_STEP_SUMMARY pour apparaître dans le résumé du job.

Vérification : Dans les logs GitHub Actions, la dernière étape affiche le résumé avec les 4 informations.


Tâche 6 : Déclencher le pipeline et analyser les logs

Faites un commit qui intentionnellement casse un test (modifiez un fichier test), poussez, observez le pipeline échouer, corrigez et vérifiez que le pipeline repasse au vert.

Indice : Modifier server.test.js pour qu'un expect() échoue. Poussez, observez le job test passer en rouge. Corrigez, poussez à nouveau.

Vérification : L'onglet Actions affiche un run rouge suivi d'un run vert. Le job build-docker ne s'est pas lancé lors du run rouge.


🗂️ Mini-Projet : Pipeline CI complet

Arborescence du projet :

devops-ci-demo/
├── .github/
│   └── workflows/
│       └── ci.yml
├── server.js
├── server.test.js
├── package.json
├── Dockerfile
└── .dockerignore

Vérification finale :

bash
# Déclencher manuellement via GitHub CLI (optionnel)
gh workflow run ci.yml

# Voir les runs récents
gh run list --workflow=ci.yml

# Voir les détails d'un run
gh run view <RUN_ID> --log

Checkpoints de validation :

  • ci.yml est valide YAML (GitHub Actions ne signale pas d'erreur de syntaxe)
  • Le workflow se déclenche sur push vers main
  • Le job test passe au vert (npm test réussit)
  • Le job build-docker ne se lance que sur main et après test
  • Un test cassé fait échouer le pipeline AVANT le build Docker
  • L'historique Actions montre au moins un run rouge et un run vert

Retour au module

Sur cette page

  • 🎯 Objectifs
  • 📖 Contexte
  • 📋 Énoncé
  • 🧭 Déroulement de l'exercice
  • Tâche 1 : Initialiser le repository
  • Tâche 2 : Créer la structure du workflow
  • Tâche 3 : Ajouter le job de tests
  • Tâche 4 : Ajouter le job de build Docker
  • Tâche 5 : Ajouter un récapitulatif de statut
  • Tâche 6 : Déclencher le pipeline et analyser les logs
  • 🗂️ Mini-Projet : Pipeline CI complet