CI/CD pour les projets JavaScript : GitHub Actions de A à Z

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction : Pourquoi le CI/CD est indispensable pour les projets JavaScript

Le développement web moderne est impensable sans automatisation. Chaque jour, les développeurs JavaScript (Node.js) sont confrontés à des tâches répétitives : exécution de tests, vérification du code avec un linter, compilation et déploiement de l'application. L'exécution manuelle de ces opérations prend non seulement du temps, mais est également source d'erreurs. C'est là que le CI/CD (Continuous Integration / Continuous Deployment) intervient — une méthodologie qui permet d'automatiser toutes les étapes du cycle de vie du logiciel.

GitHub Actions est un outil d'automatisation intégré à la plateforme GitHub, parfaitement adapté à la configuration de pipelines CI/CD. Dans cet article, nous allons voir comment configurer de zéro un cycle d'automatisation complet pour un projet JavaScript (Node.js) : de l'exécution des tests au déploiement sur un serveur. Vous apprendrez à créer un workflow, à rédiger des fichiers de configuration et à éviter les erreurs courantes.



Les bases de GitHub Actions : Structure et composants

Avant d'écrire du code, examinons les concepts clés de GitHub Actions. L'ensemble du pipeline est décrit dans des fichiers YAML, stockés dans le répertoire .github/workflows de votre dépôt.

Éléments clés d'un workflow

  • Workflow — un processus automatisé composé d'un ou plusieurs Job (tâches).
  • Job — un ensemble d'étapes (Step) exécutées sur un même Runner (machine virtuelle).
  • Step — une commande ou une action individuelle (Action).
  • Event — le déclencheur qui lance le workflow (par exemple, push, pull request).

Pour les projets JavaScript, un workflow standard ressemble à ceci :

name: CI/CD pour Node.js

on: push: branches: [ main ] pull_request: branches: [ main ]

jobs: build-and-test: runs-on: ubuntu-latest strategy: matrix: node-version: [18.x, 20.x] steps: - uses: actions/checkout@v4 - name: Installation de Node.js uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} - name: Installation des dépendances run: npm ci - name: Linting run: npm run lint - name: Tests run: npm test

Remarquez strategy.matrix — cela permet de tester le code sur plusieurs versions de Node.js simultanément, ce qui est crucial pour les bibliothèques et les packages.



Configuration étape par étape du CI/CD pour un projet Node.js

Examinons un exemple complet de configuration d'un pipeline pour une application web typique avec Express.js. Commençons par le fichier de base .github/workflows/node-ci.yml.

Étape 1 : Vérification de base du code

name: Node.js CI

on: push: branches: [ develop, main ] pull_request: branches: [ main ]

jobs: quality: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Configuration de Node.js uses: actions/setup-node@v4 with: node-version: '20' cache: 'npm' - name: Installation des dépendances run: npm ci - name: Linting du code run: npm run lint - name: Exécution des tests unitaires run: npm run test:unit - name: Compilation du projet run: npm run build

Points clés :

  • cache: 'npm' — met en cache node_modules, accélérant les exécutions ultérieures.
  • npm ci — installation propre des dépendances, plus rapide et plus fiable que npm install.
  • La séparation des tests en unitaires et d'intégration (optionnelle) permet d'obtenir un retour plus rapide.



Étape 2 : Tests d'intégration avec une base de données

Pour tester avec une vraie base de données, utilisez les services GitHub Actions :

jobs:  integration-tests:    runs-on: ubuntu-latest                    

Blogs

Book Recommendations