CI/CD pour projets JavaScript : GitHub Actions

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
```html

Introduction à CI/CD et GitHub Actions pour JavaScript

Le développement moderne d'applications JavaScript sur Node.js nécessite non seulement un code de qualité, mais aussi un processus fiable pour le livrer aux utilisateurs. CI/CD (Continuous Integration / Continuous Deployment) est un ensemble de pratiques qui permet d'automatiser la construction, les tests et le déploiement du code. L'un des outils les plus populaires pour mettre en œuvre CI/CD est GitHub Actions — un système d'automatisation de workflow intégré à la plateforme GitHub.

Dans cet article, nous allons détailler comment configurer CI/CD pour un projet JavaScript (Node.js) en utilisant GitHub Actions. Vous apprendrez à créer des pipelines, exécuter des tests, effectuer du linting, builder le projet et le déployer automatiquement sur un serveur ou un hébergement cloud. Ce contenu sera utile aussi bien aux développeurs débutants qu'aux ingénieurs expérimentés souhaitant optimiser le processus de développement.

Les bases de GitHub Actions : structure et syntaxe

GitHub Actions fonctionne avec des fichiers YAML, stockés dans le répertoire .github/workflows de votre dépôt. Chacun de ces fichiers définit un ou plusieurs workflows, qui sont déclenchés par des événements spécifiques : push, pull request, création de release, etc.

La structure de base d'un workflow comprend :

  • name — le nom du pipeline ;
  • on — l'événement qui déclenche l'exécution ;
  • jobs — un ensemble de tâches exécutées séquentiellement ou en parallèle ;
  • steps — les étapes à l'intérieur de chaque tâche (commandes, actions).

Voici un exemple minimal pour un projet Node.js :

name: Node.js CI

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

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4
      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '20'
      - run: npm ci
      - run: npm test

Dans cet exemple, nous utilisons des actions intégrées : actions/checkout pour cloner le dépôt et actions/setup-node pour installer la version souhaitée de Node.js. La commande npm ci installe les dépendances strictement selon package-lock.json, et npm test exécute les tests.

Configuration des tests et du linting

Un pipeline CI/CD de qualité pour un projet JavaScript doit inclure la vérification de la conformité du code aux normes et des tests automatisés. Voici un exemple avancé utilisant des outils populaires : ESLint pour le linting, Jest pour les tests et Prettier pour le formatage.

Ajoutons les dépendances nécessaires au projet :

npm install --save-dev eslint jest prettier eslint-config-prettier

Créons un fichier de configuration .eslintrc.json :

{
  "env": {
    "node": true,
    "es2021": true,
    "jest": true
  },
  "extends": ["eslint:recommended", "prettier"],
  "parserOptions": {
    "ecmaVersion": "latest",
    "sourceType": "module"
  },
  "rules": {
    "no-console": "warn",
    "semi": ["error", "always"]
  }
}

Mettons maintenant à jour le fichier de workflow :

name: Lint and Test

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

jobs:
  quality:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '20'
          cache: 'npm'

      - name: Install dependencies
        run: npm ci

      - name: Run linter
        run: npx eslint .

      - name: Check formatting
        run: npx prettier --check .

      - name: Run tests
        run: npm test

      - name: Upload test coverage
```                

Blogs

Book Recommendations