Ce dépôt contient le code source du Projet 11 du cursus OpenClassrooms. Le projet inclut des composants backend et frontend et est configuré pour utiliser Docker et CircleCI pour l'intégration continue.
- Installation
- Utilisation
- Exécution des tests
- Intégration continue avec CircleCI
- GitFlow pour le projet
- Tests de performance avec JMeter
- Tests end-to-end avec Cypress
Pour configurer le projet localement, suivez ces étapes :
-
Clonez le dépôt :
git clone https://github.com/lecramc/OC_P11_Code.git cd OC_P11_Code
-
S'assurer que docker est installer sur voter machine.
-
Créer un fichier .env.local à la racine du dossier /frontend et compléter les variables ci-dessous :
VITE_API_URL="http://localhost:8080/api/"
VITE_MAPBOX_KEY="XXX"
VITE_API_KEY="XXX"
- Construisez et démarrez les conteneurs avec Docker Compose :
docker-compose up --build
Une fois les conteneurs démarrés, vous pouvez accéder aux services frontend et backend via les URL suivantes :
- Frontend :
http://localhost:3000
- Backend :
http://localhost:8080
Pour exécuter les tests du frontend et du backend, utilisez les commandes suivantes :
-
Pour le backend :
cd backend/Hospital mvn test
-
Pour le frontend :
cd frontend npm run test
Ce projet utilise CircleCI pour l'intégration continue. Le fichier de configuration .circleci/config.yml
inclut les tâches suivantes :
- Orbs : Utilisation de
circleci/docker
etcircleci/maven
pour simplifier les configurations Docker et Maven. - Jobs :
build_hospital_service
: Lance les tests et génère un rapport de coverage, puis "build" le service backendHospital
.build_frontend
: Installe les dépendances, exécute les tests unitaires, et "build" le projet frontend.
- Workflows : Définit l'ordre d'exécution des jobs. Le job
build_frontend
dépend de la réussite debuild_hospital_service
.
Pour plus de détails, référez-vous au fichier config.yml.
Le projet utilise GitFlow comme modèle de branchement. Voici un aperçu des branches principales et des étapes pour travailler avec GitFlow
main : Contient le code de production. develop : Contient le code pour la prochaine version et sert de branche d'intégration.
Feature branches : Utilisées pour développer de nouvelles fonctionnalités. Dérivées de develop et fusionnées dans develop après achèvement.
git checkout develop
git checkout -b feature/nom-de-la-feature
Hotfix branches : Utilisées pour corriger des bugs critiques en production. Dérivées de main et fusionnées dans main puis develop.
git checkout main
git checkout -b hotfix/nom-du-hotfix
Pour exécuter les tests de performance avec JMeter, utilisez le fichier test_plan.jmx
situé dans le répertoire backend/Hospital
. Suivez les étapes ci-dessous :
-
Assurez-vous que JMeter est installé sur votre machine. Vous pouvez le télécharger depuis Apache JMeter.
-
Lancez l'application java :
mvn spring-boot:run
-
Lancez JMeter en mode GUI :
jmeter
-
Ouvrez le fichier
test_plan.jmx
:File -> Open -> backend/Hospital/test_plan.jmx
-
Exécutez le test en cliquant sur le bouton Start (icône verte).
Pour exécuter les tests end-to-end avec Cypress, suivez les étapes ci-dessous :
-
Naviguez dans le répertoire
frontend
:cd frontend
-
Assurez-vous que les dépendances sont installées :
npm install
-
Installer cypress
npx cypress install
-
Lancez Cypress en mode interactif :
npx cypress open
-
S'assurer que l'app java est lancé puis sélectionnez le test que vous souhaitez exécuter dans l'interface graphique de Cypress.
Alternativement, vous pouvez exécuter les tests en mode headless :
npx cypress run