Déploiement
Vue d’ensemble
Le déploiement de l’application repose sur les services suivants :
GitHub Actions pour exécuter la CI/CD ;
Docker pour construire l’image de l’application ;
Docker Hub pour stocker l’image ;
Render pour héberger l’application.
Le déploiement en production est déclenché uniquement depuis la branche
master.
Conteneurisation
Le fichier Dockerfile situé à la racine du projet décrit l’image Docker de
l’application.
L’image :
installe les dépendances Python ;
copie le code du projet ;
collecte les fichiers statiques ;
lance l’application avec Gunicorn ;
expose le port utilisé par le service.
Construire l’image localement
Depuis la racine du projet :
docker build -t oc-lettings:local .
Lancer le conteneur localement
docker run --rm -p 8000:8000 -e SECRET_KEY=django-insecure-local -e DEBUG=False -e ALLOWED_HOSTS=localhost,127.0.0.1 oc-lettings:local
Sous PowerShell, la commande peut être écrite sur une seule ligne :
docker run --rm -p 8000:8000 -e SECRET_KEY=django-insecure-local -e DEBUG=False -e ALLOWED_HOSTS=localhost,127.0.0.1 oc-lettings:local
L’application est alors accessible à l’adresse suivante :
http://127.0.0.1:8000/
Pipeline CI/CD
Le workflow GitHub Actions est stocké dans le dossier :
.github/workflows
Il comporte trois étapes principales.
Tests
À chaque push et à chaque pull_request, la CI :
installe les dépendances ;
exécute les tests Django avec
coverage;vérifie que la couverture est au moins égale à 80 % ;
exécute
flake8.
Les commandes principales sont :
coverage run manage.py test
coverage report --fail-under=80
flake8
Construction et publication de l’image
Lorsque les tests réussissent sur la branche master, le workflow :
construit l’image Docker ;
se connecte à Docker Hub ;
publie l’image avec le tag
latest;publie également une image identifiée par le SHA du commit.
Image de production :
docker.io/aurelienamorin/oc-lettings:latest
Déploiement sur Render
Après la publication de l’image Docker, GitHub Actions appelle le deploy hook fourni par Render.
Render récupère alors la nouvelle image latest depuis Docker Hub et
redémarre le service avec cette version.
Variables d’environnement
Les variables suivantes doivent être configurées sur Render :
SECRET_KEYClé secrète Django utilisée en production.
DEBUGDoit être définie à
False.ALLOWED_HOSTSDoit contenir le nom d’hôte du service Render.
SENTRY_DSNDSN du projet Sentry.
SENTRY_ENVIRONMENTEnvironnement transmis à Sentry, par exemple
production.PORTPort fourni au conteneur par Render.
Les secrets utilisés par GitHub Actions, notamment les identifiants Docker Hub et l’URL du deploy hook Render, doivent être enregistrés dans les secrets du dépôt GitHub.
Fichiers statiques
WhiteNoise sert les fichiers statiques en production.
La commande suivante collecte les fichiers statiques avant le lancement de l’application :
python manage.py collectstatic --noinput
Application en production
L’application déployée est accessible à l’adresse suivante :
https://oc-lettings-47nw.onrender.com/
Vérifications après déploiement
Après chaque déploiement, vérifiez :
l’affichage de la page d’accueil ;
la navigation vers les locations et les profils ;
l’accès à l’interface d’administration ;
le chargement des fichiers statiques ;
l’absence d’erreurs dans les journaux Render ;
la remontée des erreurs dans Sentry.