Introduction : Pourquoi le CI/CD est essentiel pour les projets JavaScript
Développer une application JavaScript moderne sur Node.js est un processus complexe qui inclut l'écriture de code, les tests, la construction et le déploiement. Sans automatisation, ces étapes sont effectuées manuellement, ce qui entraîne des erreurs, des retards et une réduction de la qualité du produit. CI/CD (Intégration Continue / Livraison Continue) est une pratique DevOps qui automatise la construction, les tests et le déploiement du code.
GitHub Actions est un outil intégré à GitHub qui permet de créer des workflows pour l'automatisation des tâches. Il est idéal pour les projets JavaScript car il prend en charge Node.js, npm, Yarn et de nombreux services populaires. Dans cet article, nous allons détailler comment configurer un pipeline CI/CD complet pour votre projet JavaScript en utilisant GitHub Actions.
Vous apprendrez : comment exécuter des tests, comment construire l'application, comment déployer sur un serveur ou une plateforme cloud, et comment éviter les erreurs courantes.
Les bases de GitHub Actions pour JavaScript
Qu'est-ce que GitHub Actions ?
GitHub Actions est une plateforme pour automatiser les workflows. Vous décrivez une séquence d'étapes dans un fichier YAML, qui est placé dans le dépôt (généralement .github/workflows/main.yml). Chaque fois qu'un événement se produit (ex : push, pull request), le workflow est déclenché.
Un workflow est composé de jobs qui sont exécutés sur un runner (une machine virtuelle). Pour les projets JavaScript, un runner Ubuntu préinstallé avec Node.js est généralement utilisé.
Workflow de base pour Node.js
Commençons par un workflow simple qui exécute des tests à chaque push ou pull request. Créez un fichier .github/workflows/ci.yml :
name: CI для JavaScript
on: push: branches: [ main, develop ] pull_request: branches: [ main ]
jobs: test: runs-on: ubuntu-latest
strategy: matrix: node-version: [16.x, 18.x, 20.x]
steps: - uses: actions/checkout@v4 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} cache: 'npm' - run: npm ci - run: npm test - run: npm run build --if-presentCe workflow fait ce qui suit :
- Déclencheurs : s'exécute lors d'un push sur main/develop ou lors d'une pull request vers main.
- Matrice de versions : teste sur Node.js 16, 18, 20 — cela garantit la compatibilité.
- Mise en cache :
cache: 'npm'accélère l'installation des dépendances. - Commandes :
npm ci(installation propre),npm test(tests),npm run build(construction, si présente).
Configuration d'un pipeline CI/CD complet
Maintenant, rendons-le plus complexe : ajoutons du linting, des vérifications de sécurité et un déploiement automatique après des tests réussis.
Étape 1 : Linting et formatage
Ajoutez un job pour ESLint et Prettier. Cela garantit un style de code cohérent :
jobs: lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: '18.x' cache: 'npm' - run: npm ci - run: npm run lint - run: npx prettier --check .Dans package.json, il devrait y avoir des scripts "lint" et "format". Exemple :
{ "scripts": { "lint": "eslint src/", "format": "prettier --write ." }}Étape 2 : Sécurité des dépendances
Utilisez npm audit pour vérifier les vulnérabilités :
security: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - run: npm audit --audit-level=highSi