Ce projet implémente la fonction FizzBuzz avec des règles étendues. Pour un nombre n, la fonction :
- Ajoute "Fizz" si
nest divisible par 3. - Ajoute "Fizz" si
ncontient le chiffre 3. - Ajoute "Buzz" si
nest divisible par 5. - Ajoute "Buzz" si
ncontient le chiffre 5. - Si aucune de ces conditions n'est remplie, retourne
nsous forme de chaîne.
Le projet inclut :
- Le code source de l'application (fichiers
fizzbuzz.pyetmain.py) - Des tests unitaires (dans
test_fizzbuzz.py) - Une configuration GitHub Actions pour l'exécution des tests et la génération d'un rapport de couverture
- Une configuration Docker pour containeriser l'application et déployer l'image sur DockerHub
- Git : Pour cloner le dépôt et gérer les branches.
- Python 3.9+ : Pour exécuter l'application et les tests.
- Docker : Pour construire l'image et exécuter l'application dans un container.
- GitHub Actions : Pour l'intégration continue (CI) et le déploiement.
-
Cloner le dépôt :
git clone https://github.com/Amiiircmoi/fizzbuzz-Efrei.git cd FizzBuzz-Efrei -
Créer et activer un environnement virtuel (optionnel) :
python3.9 -m venv venv source venv/bin/activate -
Installer les dépendances :
pip install --no-cache-dir -r requirement.txt
-
Exécuter l'application :
python main.py
Pour lancer les tests unitaires et générer un rapport de couverture, exécutez :
python -m unittest discover
coverage run -m unittest discover
coverage reportLe projet dispose d'un Dockerfile multi-stage pour construire une image légère.
docker build -t fizzbuzz-app .Pour exécuter l'application dans un container Docker, exécutez la commande suivante :
docker run --rm fizzbuzz-appPour exécuter les tests unitaires dans un container Docker, exécutez la commande suivante :
docker run --rm fizzbuzz-app python -m unittest discoverLe dépôt contient deux workflows principaux :
- Tests Python
Le fichier
.github/workflows/python_test.yml:
- Se déclenche lors d'un push ou d'une pull request sur la branche
main. - Configure l'environnement Python, installe les dépendances et exécute les tests unitaires avec
coverage. - Génère et upload un rapport HTML de couverture.
- Docker Build & Deploy
Le fichier
.github/workflows/docker_deploy.yml(déclenché manuellement viaworkflow_dispatch) :
- Vérifie la présence d'un Dockerfile avant de continuer.
- Configure Docker Buildx, se connecte à DockerHub et construit l'image Docker.
- Pousse l'image sur DockerHub (assure-toi que les secrets sont configurés, voir ci-dessous).
- Exécute ensuite les tests unitaires dans le container construit.
Pour déployer l'image Docker sur DockerHub via GitHub Actions, ajoutez les secrets suivants dans votre dépôt :
- Accédez à Settings > Secrets and variables > Actions.
- Cliquez sur New repository secret et ajoutez :
- DOCKERHUB_USERNAME : Votre nom d'utilisateur DockerHub.
- DOCKERHUB_TOKEN : Votre token d'accès DockerHub.
Ces secrets sont utilisés dans le workflow pour se connecter à DockerHub et pousser l'image.
Pour éviter les push directs, configurez une règle de protection sur la branche main dans Settings > Branches. Exigez :
- Une revue de pull request avant merge.
- Le succès des tests (status check) avant de pouvoir merger une pull request.
Chaque nouvelle évolution doit être développée sur une branche dédiée (feature branch) et intégrée via une pull request vers main.
Pour lancer manuellement le workflow Docker (par exemple, pour tester la construction et le déploiement de l'image) :
- Assurez-vous que le workflow est présent dans la branche par défaut ou utilisez l'API GitHub.
- Allez dans l'onglet Actions sur GitHub, sélectionnez le workflow "Docker Build and Deploy" et cliquez sur Run workflow.
Pour toute question ou suggestion, veuillez contacter Amir ANCIAUX (amiiircmoi).