12. DevOps ‐ CI CD ‐ Outils - Zwarmex/Projet-integration-2024-2025 GitHub Wiki

Quelles automatisations avez-vous mis en place ? Au niveau déploiement, test, etc… ? Quels outils utiles avez-vous utilisés pour gérer votre projet ? Comment ? (En lien avec le cours de gestion de projet.)

Déploiement - CD

On a utilisé Render pour déployer le backend et le frontend, ce qui permet le déploiement en continu, je vous invite à vous rendre sur Hébergement ‐ Déploiement pour voir en détails comment est géré le déploiement dans notre application et quels mécanismes DevOps y sont mis en place.

Github Actions - CI

On a mis en place une pipeline d'intégration continue avec github actions qui ressemble à ceci :

on:
  push:
    branches:
      - main
      - dev
  pull_request:
    branches:
      - main
      - dev
jobs:
  lint-and-test:
    name: Lint, Test & Dependency Check
    runs-on: ubuntu-latest

    services:
      mongo:
        image: mongo:5.0
        ports:
          - 27017:27017
        options: --quiet

    steps:
      # 1. Récupérer le code
      - name: Checkout code
        uses: actions/checkout@v3

      # 2. Mise en place de Node.js
      - name: Setup Node.js
        uses: actions/setup-node@v3
        with:
          node-version: 18

      # 3. Installer les dépendances du backend
      - name: Install Backend Dependencies
        run: |
          cd back
          npm install

      # 4. Installer les dépendances du frontend
      - name: Install Frontend Dependencies
        run: |
          cd front
          npm install

      # 5. Lint Backend
      - name: Lint Backend Code
        run: |
          cd back
          npx eslint .

      # 6. Lint Frontend
      - name: Lint Frontend Code
        run: |
          cd front
          npx eslint .

      # 7. Exécuter les tests du backend
      - name: Run Backend Tests
        run: |
          cd back
          npm test

      # 8. Exécuter les tests du frontend
      - name: Run Frontend Tests
        run: |
          cd front
          npm test

      # 9. Vérifier les dépendances
      - name: Audit Dependencies
        run: |
          cd back
          npm audit --audit-level=high
          cd ../front
          npm audit --audit-level=high

1. Événements déclencheurs (on)

push sur les branches main et dev : Le pipeline s'exécute à chaque push sur ces branches. pull_request vers main et dev : Il s'exécute aussi pour les pull requests ciblant ces branches.

2. Job : lint-and-test

Le pipeline exécute un seul job appelé Lint, Test & Dependency Check

a. Environnement de travail

  • runs-on: ubuntu-latest : Le job s'exécute sur un environnement Linux Ubuntu.
  • service MongoDB :
    • Le pipeline configure une instance de MongoDB 5.0 comme service à l'aide de Docker.
    • MongoDB est exposé sur le port 27017, ce qui permet aux tests backend de s’y connecter.

3. Étapes du pipeline

Étape 1 : Checkout du code

  • Utilise l'action officielle actions/checkout pour cloner le dépôt dans l'environnement de travail.

Étape 2 : Configuration de Node.js

  • Installe Node.js version 18, nécessaire pour exécuter les commandes npm dans le projet.

Étape 3 : Installation des dépendances backend

  • Change de répertoire vers back et installe les dépendances via npm install

Étape 4 : Installation des dépendances frontend

  • Change de répertoire vers front et installe les dépendances via npm install

Étape 5 : Lint du code backend

  • Analyse statique du code backend avec ESLint

Étape 6 : Lint du code frontend

  • Analyse statique du code frontend avec ESLint

Étape 7 : Tests backend

  • Exécute les tests unitaires/automatisés du backend avec npm test dans le répertoire back

Étape 8 : Tests frontend

  • Exécute les tests unitaires/automatisés du frontend avec npm test dans le répertoire front

Étape 9 : Audit des dépendances

  • Vérifie les vulnérabilités des dépendances dans les parties backend et frontend