-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
93 lines (82 loc) · 3.4 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# Charger les variables d'environnement depuis .env
include .env
export $(shell sed 's/=.*//' .env)
# Variables
VENV = venv
PYTHON = python3
PIP = $(VENV)/bin/pip
ACTIVATE = source $(VENV)/bin/activate
DOCKER_IMAGE = health-calculator
# Initialiser le projet (création de venv + installation des dépendances)
init:
@echo "Initialisation du projet..."
@echo " "
@echo "Création d'un environnement virtuel"; \
$(PYTHON) -m venv $(VENV); \
. $(VENV)/bin/activate && \
echo " "
@echo "Installation des dépendances Python..." && \
$(PIP) install -r requirements.txt && \
echo " "
@echo "Installation des hooks pre-commit (vérifications automatiques du code)..." && \
$(VENV)/bin/pre-commit install && \
echo " "
@echo "Exécution des hooks pre-commit sur tous les fichiers..." && \
$(VENV)/bin/pre-commit run --all-files
@echo " "
@echo " "
@echo "Les dépendances sont installées, et les hooks pre-commit ont été configurés."
@echo "Pour activer l'environnement virtuel, exécutez la commande suivante :"
@echo "source $(VENV)/bin/activate"
# Lancer l'application Flask
run:
. $(VENV)/bin/activate && python app.py
# Construire l'image Docker
build:
docker build -t $(DOCKER_IMAGE) .
# Lancer le conteneur Docker
run-container:
docker run -d -p $(PORT):5000 --name $(CONTAINER_NAME) $(DOCKER_IMAGE)
@echo "Conteneur $(CONTAINER_NAME) lancé sur le port $(PORT)."
# Arrêter et supprimer le conteneur Docker
stop-container:
@if docker ps -q -f name=$(CONTAINER_NAME); then \
docker stop $(CONTAINER_NAME) && docker rm $(CONTAINER_NAME); \
echo "Conteneur $(CONTAINER_NAME) arrêté et supprimé."; \
else \
echo "Aucun conteneur $(CONTAINER_NAME) n'est en cours d'exécution."; \
fi
# Lancer les tests unitaires
test:
. $(VENV)/bin/activate && python -m unittest discover -s tests
# Lancer les tests de l'API
test-api:
curl -X POST -H "Content-Type: application/json" -d '{"height": 1.75, "weight": 70}' http://127.0.0.1:$(PORT)/bmi
curl -X POST -H "Content-Type: application/json" -d '{"height": 175, "weight": 70, "age": 30, "gender": "male"}' http://127.0.0.1:$(PORT)/bmr
# Tester les endpoints déployés sur Azure
test-azure:
@echo "Testing Azure deployment..."
curl -X POST -H "Content-Type: application/json" \
-d '{"height": 1.75, "weight": 70}' \
https://health-calculator-hs-ggafakgnduhzaudn.francecentral-01.azurewebsites.net/bmi \
| jq .
curl -X POST -H "Content-Type: application/json" \
-d '{"height": 175, "weight": 70, "age": 30, "gender": "male"}' \
https://health-calculator-hs-ggafakgnduhzaudn.francecentral-01.azurewebsites.net/bmr \
| jq .
# Nettoyer le projet
clean:
rm -rf $(VENV) __pycache__ */__pycache__ flask.pid
@echo "Environnement virtuel, caches Python et fichier PID supprimés."
# Aide
help:
@echo "Available commands:"
@echo " make init - Créer un environnement virtuel et installer les dépendances."
@echo " make run - Lancer l'application Flask."
@echo " make build - Construire l'image Docker."
@echo " make run-container - Lancer l'application dans un conteneur Docker."
@echo " make stop-container - Arrêter et supprimer le conteneur Docker."
@echo " make test - Lancer les tests unitaires."
@echo " make test-api - Tester l'API avec des requêtes curl."
@echo " make test-azure - Tester l'API déployée sur Azure."
@echo " make clean - Nettoyer le projet (supprimer venv, caches, etc.)."