Master Branch : | Dev Branch :
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/in
git clone https://github.com/OpenClassrooms-Student-Center/Python-OC-Lettings-FR.git
cd /path/to/Python-OC-Lettings-FR
python -m venv
apt-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
python
exé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
pip
exécute l'exécutable pip dans l'environnement virtuel,which pip
- Pour désactiver l'environnement,
deactivate
cd /path/to/Python-OC-Lettings-FR
source venv/bin/activate
pip install --requirement requirements.txt
python manage.py runserver
- Aller sur
http://localhost:8000
dans 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-FR
source venv/bin/activate
flake8
cd /path/to/Python-OC-Lettings-FR
source venv/bin/activate
pytest
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%';
.quit
pour quitter
- 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
Fichier des variables environnements local sont disponibles à l'adresse : oc_lettings_site/settings/.env
Particularité :
oc_lettings_site/settings contient plusieurs fichiers.
local.py est le fichier de setting local et du docker.
heroku.py est le fichier de setting pour l'application heroku.
le fichier .env doit contenir au minimum les lignes suivantes en mode local : (Bien entendu ce sont de fausses données)
SECRET_KEY='fp$9^59[3]sriajg$_%]=5trot9g!1qa@ew(o-1#@=&4%=hp46(s'
ALLOWED_HOSTS=127.0.0.1,[::1],0.0.0.0,.herokuapp.com
# Cette ligne est facultative en mode debug=True
Ou l'environnement doit les définir. Au choix, l'environnement sera toujours prioritaire.
Pré-requis :
- Un compte/acces Github
- Un compte/acces CircleCi
- Un Compte/acces DockerHub
- Un Compte/Acces Heroku
- Un Compte/Acces Sentry
- workflow 'build-and-test' du Pipeline (le dépôt) Python-OC-Lettings-FR.
- Il est décomposé en différents 'jobs':
- build and test :
- va lancer les tests (via pytests)
- contrôler le linting PEP8 via Flake8
- build and test :
- Il est décomposé en différents 'jobs':
- le workflow 'dev-built-and-deploy' attendra notre aval pour se lancer
- les jobs sont :
- docker build and push
- push sur heroku
- les jobs sont :
- le workflow master_commit va se lancer
- Sa réussite du job ‘build and test’, va déclencher:
- build docker:
- Cela va créer une image docker et l'uploader sur le docker hub.
- push docker: Il y aura 2 push identiques mais tagué différemment (1 hash du commit et 1 lastest le dernier) Cela a pour but de facilité le déploiement rapide en local sur la dernière version.
- heroku/deploy-via-git: Va lancer le build de l'application sur Heroku via Git.
- build docker:
- Sa réussite du job ‘build and test’, va déclencher:
Paramétrage nécessaire :
Création des variables d'environnement au niveau du projet :
- Dans Projets:
- Cliquez sur
Project Settings
(Les 3 petits points) - Cliquez sur
Environment Variables
- Cliquez sur
Add Environment Variables
Nom des Variables | Description | Valeurs à renseigner |
---|---|---|
DOCKER_USER | User Docker Hub | manu512 |
DOCKER_TOKEN | Token Dockerhub ou Mdp | 1321654654654651231654 |
HEROKU_API_KEY | API Token Heroku | 1321654654654651231654 |
SENTRY_DSN | URL Sentry | https://0ae682071519451cb7cb551c5d6dc3f7@o977250.ingest.sentry.io/5933731 |
SECRET_KEY | DJANGO SECRET_KEY | fp$9^593hsriajg$_%=5trot9g!1qa@ew(o-1#@=&4%=hp46(s |
HEROKU_APP_NAME | Le nom de l'application | oc-lettings-512 |
Github Repository permet de faire le versionning de notre projet/application.
Docker-Hub Manu512 Repository permet de stocker en ligne l'image docker de notre application.
La commande unique pour récupération de l'application en local et son démarrage immédiat est :
docker run --pull always -p 8000:8000 --name P13-Application manu512/oc-lettings:lastest
- P13-Application est le nom de l'application docker
- manu512 est le compte du Hub Docker
- lastest peux être remplacé par le hash du commit. Comme son nom l'indique lastest est le dernier commit.
Heroku permet d'heberger notre application.
En cas de necessité ou en cas de suppression, il faut créer l'application 'oc-lettings-512'.
Info pour que l'application fonctionne, il faut définir plusieurs variables. C'est le workflows CircleCI qui s'en charge.
Les variables sont :
- SENTRY_DSN
- SECRET_KEY
Sentry permet de faire le monitoring de l'application.
Elle permet également de détecter des éventuels bug/issues.
Mais il faut pour cela intégrer le sentry-sdk et la variable dans settings.py (heroku.py dans notre application).
Soutenance passé