Site web d'Orange County Lettings
- Compte GitHub avec accès en lecture à ce repository
- Git CLI
- SQLite3 CLI
- Interpréteur Python, version 3.6 ou supérieure
Dans le reste de la documentation sur le développement local, il est supposé que la commande python de votre OS shell exécute l'interpréteur Python ci-dessus (à moins qu'un environnement virtuel ne soit activé).
cd /path/to/put/project/ingit clone https://github.com/OpenClassrooms-Student-Center/Python-OC-Lettings-FR.git
cd /path/to/Python-OC-Lettings-FRpython -m venv venvapt-get install python3-venv(Si l'étape précédente comporte des erreurs avec un paquet non trouvé sur Ubuntu)- Activer l'environnement
source venv/bin/activate - Confirmer que la commande
pythonexécute l'interpréteur Python dans l'environnement virtuelwhich python - Confirmer que la version de l'interpréteur Python est la version 3.6 ou supérieure
python --version - Confirmer que la commande
pipexécute l'exécutable pip dans l'environnement virtuel,which pip - Pour désactiver l'environnement,
deactivate
cd /path/to/Python-OC-Lettings-FRsource venv/bin/activatepip install --requirement requirements.txtpython manage.py runserver- Aller sur
http://localhost:8000dans un navigateur. - Confirmer que le site fonctionne et qu'il est possible de naviguer (vous devriez voir plusieurs profils et locations).
cd /path/to/Python-OC-Lettings-FRsource venv/bin/activateflake8
cd /path/to/Python-OC-Lettings-FRsource venv/bin/activatepytest
cd /path/to/Python-OC-Lettings-FR- Ouvrir une session shell
sqlite3 - Se connecter à la base de données
.open oc-lettings-site.sqlite3 - Afficher les tables dans la base de données
.tables - Afficher les colonnes dans le tableau des profils,
pragma table_info(Python-OC-Lettings-FR_profile); - Lancer une requête sur la table des profils,
select user_id, favorite_city from Python-OC-Lettings-FR_profile where favorite_city like 'B%'; .quitpour quitter- python manage.py dbshell (ouvrir un shell interactif sqlite)
- Commande pour récupérer les migrations : SELECT * FROM django_migrations
- Aller sur
http://localhost:8000/admin - Connectez-vous avec l'utilisateur
admin, mot de passeAbc1234!
Utilisation de PowerShell, comme ci-dessus sauf :
- Pour activer l'environnement virtuel,
.\venv\Scripts\Activate.ps1 - Remplacer
which <my-command>par(Get-Command <my-command>).Path
Nous utilisons Sentry pour capturer les erreurs en production :
- Définir la variable d’environnement
SENTRY_DSN(fourni par Sentry). - Le fichier
settings.pyinitialise automatiquement Sentry siSENTRY_DSNest présent. - Les logs sont affichés en console (niveau DEBUG en dev, INFO/ERROR en prod).
- Les exceptions non interceptées remontent dans Sentry grâce à l’intégration Django.
SENTRY_DSN(env)- Accès internet pour envoyer les événements à Sentry
- Exporter
SENTRY_DSNsur le serveur. - Redémarrer l’application.
- Vérifier l’onglet « Issues » dans votre projet Sentry.
Le projet utilise une pipeline CI/CD GitHub Actions couplée à la plateforme Northflank pour automatiser le déploiement en production. À chaque push sur la branche principale (master/main), la suite suivante est exécutée :
-
Tests & Linting
- Lancement des tests unitaires (Pytest avec couverture > 80 %)
- Vérification de la qualité du code avec Flake8
Si une erreur survient, la pipeline s’arrête et empêche la suite du déploiement.
-
Build de l’image Docker
- Construction d’une image multi-architecture (amd64/arm64) à partir du
Dockerfile. - Injection de la variable
SENTRY_RELEASE=${GIT_SHA}pour tracer la version. - Push de l’image sur Docker Hub sous les tags
${DOCKER_REPO}:${IMAGE_TAG}et${DOCKER_REPO}:${GITHUB_SHA}.
- Construction d’une image multi-architecture (amd64/arm64) à partir du
-
Publication & Release
- Notification d’une nouvelle release à Sentry (via
getsentry/action-release@v1) pour centraliser le suivi des versions.
- Notification d’une nouvelle release à Sentry (via
-
Déploiement sur Northflank
- Trigger d’un build via l’API Northflank (
POST /projects/${NF_PROJECT_ID}/services/${NF_OBJECT_ID}/build). - Northflank récupère l’image publiée et redéploie le conteneur.
- En fin de job, l’URL du service (ex.
https://<nom>-<projet>.code.run) est affichée dans les logs.
- Trigger d’un build via l’API Northflank (
Remarque
- DEV (DEBUG=true) : les fichiers statiques sont servis depuis
static/.- PROD (DEBUG=false) :
manage.py collectstaticgénèrestaticfiles/servi par WhiteNoise (middleware activé automatiquement).
-
Variables d’environnement de l’application (
.envou équivalent)
Un fichier.env.exampleest fourni ci-dessous. Les variables essentielles :DJANGO_DEBUG=falseDJANGO_SECRET_KEYDJANGO_ALLOWED_HOSTS(ex.*.code.run)DJANGO_CSRF_TRUSTED_ORIGINS(ex.https://*.code.run)DJANGO_BEHIND_PROXY=trueLOG_LEVEL=INFOWHITENOISE_MANIFEST_STRICT=falseSENTRY_DSN(+SENTRY_TRACES_SAMPLE, optionnel)PORT,PY_VER,DOCKER_REPO,IMAGE_TAG- Northflank :
NORTHFLANK_TOKEN,NF_PROJECT_ID,NF_OBJECT_ID
-
Secrets GitHub Actions
Dans les Settings > Secrets du repo :DOCKERHUB_USERNAME/DOCKERHUB_TOKENDOCKER_REPO/IMAGE_TAGSENTRY_AUTH_TOKEN/SENTRY_ORG/SENTRY_PROJECT/SENTRY_URLNORTHFLANK_TOKEN/NF_PROJECT_ID/NF_OBJECT_IDPY_VER
-
Variables Northflank (service)
Dans l’UI Northflank, configurez les mêmes variables d’application (sans CI-only tokens). Veillez à inclureDJANGO_ALLOWED_HOSTSetDJANGO_CSRF_TRUSTED_ORIGINS.