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 runserverougunicorn oc_lettings_site.wsgi- Aller sur http://127.0.0.1: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-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(oc_lettings_site_profile); - Lancer une requête sur la table des profils,
select user_id, favorite_city from oc_lettings_site_profile where favorite_city like 'B%'; .quitpour quitter
- Aller sur
http://localhost:8000/admin - Connectez-vous avec l'utilisateur
admin, mot de passeAbc1234!
Le pipeline choisi pour déployer ce projet est le suivant :
- dev-local
- git-hub
- circleCI
- Docker Hub & Heroku
- Sentry.
Lorsque l'on soumet un commit sur GitHub, circleCI va automatiquement déclencher un processus qui consiste à aller chercher le commit en question, à le conteneuriser pour l'envoyer sur Docker Hub et sur Heroku ou il est rendu accessible à qui le souhaite.
Outre le compte github avec lequel vous pouvez récupèrer ce projet, il vous faudra également des comptes pour les sites suivants :
Par ailleurs, bien que non requis par le pipeline actuel, il est recommandé d'installer Docker-CLI et Heroku-CLI pour pouvoir procèder à certains tests de conteneurisation ou de déploiement.
Une fois votre compte validé, utilisez le menu New / Create new app pour créer une nouvelle application de votre choix (s'il contient oc-lettings, c'est mieux).
Toutes les autres informations utiles à Heroku lui seront envoyées en même temps que le container par CircleCI.
Les variables suivantes seront utiles pour la configuration de CircleCI :
- HEROKU_APP_NAME (Le nom de l'application que vous venez de créer)
- HEROKU_TOKEN (Utilisez
heroku authorizations:createde Heroku-CLI)
Une fois votre compte validé, utilisez le bouton Create Repository pour créer un nouveau dépot pour les conteneurs (s'il contient oc-lettings, c'est mieux).
Les variables suivantes seront utiles pour la configuration de CircleCI :
- DOCKER_LOGIN (Votre identifiant Docker-Hub)
- DOCKER_PASSWORD (Votre mot de passe Docker-Hub)
- PROJECT_REPONAME (Le nom du repo que vous venez de créer)
Une fois votre compte validé, utilisez le bouton Create Project en haut à droite pour créer votre projet.
La variable suivante sera utile pour la configuration de CircleCI :
- SENTRY_DSN (Vous pouvez la trouver dans
Settings/Projects/ {VOTRE_PROJECT} /Client Keys (DSN)/DSN)
C'est ici que le plus gros du travail de configuration doit se faire. En effet, une fois connecté à votre compte, allez dans le menu Projets puis connectez le repo-github avec lequel vous travaillez à l'aide du bouton Set Up Project. Le projet possédant déjà un fichier de configuration dans .circleci/config.yml il va vous être proposé de l'utiliser. Confirmez son utilisation.
Une fois sur la page de gestion de votre projet sur CircleCI, utilisez le bouton Project Settings à droite, puis Environment Variables à gauche. Placez y les variables suivantes :
- HEROKU_APP_NAME
Le nom de l'application Heroku
- HEROKU_TOKEN
Utilisez
heroku authorizations:createde Heroku-CLI
- DOCKER_LOGIN
Votre identifiant Docker-Hub
- DOCKER_PASSWORD
Votre mot de passe Docker-Hub
- PROJECT_REPONAME
Le nom du repo sur Docker-Hub
- SENTRY_DSN
Vous pouvez la trouver sur le site Sentry dans
Settings/Projects/ {VOTRE_PROJECT} /Client Keys (DSN)/DSN
- DJANGO_SECRET_KEY
Vous pouvez la générez avec un suite comme djecrety ou la générer avec le code ci-dessous
>>> from django.core.management import utils
>>> print(utils.get_random_secret_key())Pour utiliser le container envoyé sur Docker-Hub en local il vous faut d'abord mettre en place la variable d'environnement pour Sentry (ou la passer en parametere avec -e "SENTRY_DSN={private_sentry_url}") :
>>> export SENTRY_DSN={La même chose que pour CircleCI}Puis utiliser la commande suivante pour récupèrer le conteneur et le lancer:
>>> docker run --pull always -d -e SENTRY_DSN -p 80:8000 --name oc_let DOCKER_LOGIN/PROJECT_REPONAMEVous pouvez essayer avec le repo
valkea/oc-lettingsmais il vous faudra tout de même les variables d'environnement, sinon le conteneur ne se lancera pas...docker run --pull always -d -e SENTRY_DSN -p 80:8000 --name oc_let valkea/oc-lettings:latest
Pour vérifier qu'il fonctionne bien vous pouvez visitez l'url suivante : http://127.0.0.1
Enfin, une fois terminé, fermez le avec la commande suivante :
>>> docker stop oc_letUtilisation 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