Les pipelines CI/CD (Continuous Integration / Continuous Delivery) sont devenus un standard incontournable du développement moderne. Ils assurent la qualité du code et accélèrent la mise en production.
GitHub Actions offre une solution puissante et native pour orchestrer ces pipelines directement depuis votre dépôt GitHub, sans avoir besoin d’outils externes complexes comme Jenkins.
Comprendre le CI/CD en un coup d’œil
Avant de plonger dans le code, rappelons les concepts :
- Continuous Integration (CI) : C’est le filet de sécurité. À chaque modification du code (push ou Pull Request), on compile le projet et on lance les tests automatiquement.
- Continuous Delivery (CD) : C’est l’automatisation de la livraison. Si la CI est validée (tests au vert), le code est automatiquement déployé sur un serveur de test ou de production.

Le principe clé : Si le code échoue à la compilation ou si un test ne passe pas, le processus s’arrête immédiatement. On ne déploie jamais une erreur.
GitHub Actions : Comment ça marche ?
GitHub Actions fonctionne via des Workflows (fichiers YAML) situés dans le dossier .github/workflows/. Pour bien comprendre la structure, il faut connaître ce vocabulaire :
Action : Un script réutilisable (ex: actions/checkout pour récupérer le code).
Workflow : Le processus automatisé complet (ex: « Déploiement Production »).
Event (on) : L’événement qui déclenche le workflow (ex: un push sur main).
Job : Une série d’étapes exécutées sur un même serveur (Runner).
Step : Une tâche individuelle (ex: lancer une commande npm install).
Cas pratique : Mettre en place la CI (Tests)
Voici un workflow classique pour une application Node.js. Il s’assure que le code est sain avant toute chose.
name: CI Test
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
jobs:
build-and-test:
runs-on: ubuntu-latest # Le système d'exploitation virtuel
steps:
# Étape 1 : Récupérer le code
- name: Checkout code
uses: actions/checkout@v4
# Étape 2 : Installer l'environnement
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20' # Toujours utiliser une version LTS récente
cache: 'npm' # Astuce : met en cache les node_modules pour aller plus vite
# Étape 3 : Installation et Tests
- name: Install dependencies
run: npm ci # 'npm ci' est plus fiable que 'npm install' pour les pipelines
- name: Run tests
run: npm test