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