Git Flow¶
Le projet s’appuie sur l’intégration d’Heroku avec Github pour déployer des versions de test/développement et de pré-production :
les Review Apps : des déploiements temporaires correspondant à une Pull Request
une application gratuite : déploiement automatisé à partir de
master
sur https://elgeopaso-dev.herokuapp.com/.
Branches¶
origin/master
:branche principale
correspond à la pré-production
pull request obligatoire : aucun commit ne peut être poussé directement
automatiquement déployée sur Heroku : https://elgeopaso-dev.herokuapp.com/
origin/develop
:branche générique pour le développement actif
origin/housekeeping
:branche dédiée aux opérations courantes de maintenance, mise à jour des dépendances, etc.
Processus type¶
Une nouvelle branche est créée ou une existante est utilisée
Des changements sont apportés dans cette branche et poussés vers la branche principale (master) via une pull-request. Un déploiement temporaire est effectué sur une URL mi-aléatoire. Exemple :
travail sur l’amélioration de la lecture du RSS pour gérer les problèmes d’encodage : https://github.com/Guts/elgeopaso/pull/9
déploiement temporaire correspondant : https://el-geo-paso-rss-parser-xxsprem.herokuapp.com/ - l’URL est indiqué sur la pull request
Une fois les changements achevés et validés, ils sont fusionnés dans la branche principale (merged) qui est automatiquement déployée sur Heroku : https://elgeopaso-dev.herokuapp.com/
Lorsqu’une nouvelle version est finalisée, un numéro de version est ajouté via un
git tag
.
Pour comprendre l’étiquetage des commits, voir https://git-scm.com/book/en/v2/Git-Basics-Tagging ou Divers - Utilitaires.
Déploiement¶
Depuis le serveur de production¶
Configuration initiale de Git¶
S’ajouter aux utilisateurs
sudo adduser geotribu users
Générer une paire de clés SSH :
ssh-keygen -f ~/.ssh/git_elgeopaso_rsa -t rsa -b 4096 -C "elpaso@georezo.net"
Ajouter la clé publique dans la partie Deploy keys du dépôt en lecture seule : https://github.com/Guts/elgeopaso/settings/keys.
Voir la documentation officielle de GitHub : https://developer.github.com/v3/guides/managing-deploy-keys/#deploy-keys
Configurer le dossier de destination¶
On utilise le fork du script de François Romain :
# récupérer le script
mkdir ~/scripts
cd ~/scripts
git clone git@gist.github.com:36672e8730244764b4a047f6584bd66d.git git-flow-deploy
# lancer le script
source git-flow-deploy/project-create elgeopaso
# modifier le git hook
cd /srv/git/elgeopaso.git/hooks/
sudo nano post-receive
# copier le contenu du fichier : .deploy/git-hooks/post-receive
Ressources :
Voir le billet de blog lié : https://medium.com/@francoisromain/vps-deploy-with-git-fea605f1303b
Depuis la machine locale¶
Ajouter le dépôt distant correspondant au serveur :
git remote add deploy-prod ssh://geotribu@elgeopaso.georezo.net/srv/git/elgeopaso.git/
Pour publier (par exemple depuis master) :
git push --follow-tags deploy-prod master