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 :

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

  1. Une nouvelle branche est créée ou une existante est utilisée

  2. 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 :

  3. 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/

  4. 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

  1. S’ajouter aux utilisateurs

    sudo adduser geotribu users
    
  2. Générer une paire de clés SSH :

    ssh-keygen -f ~/.ssh/git_elgeopaso_rsa -t rsa -b 4096 -C "elpaso@georezo.net"
    
  3. Ajouter la clé publique dans la partie Deploy keys du dépôt en lecture seule : https://github.com/Guts/elgeopaso/settings/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 :

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