Skip to content

Instantly share code, notes, and snippets.

@LEI
Last active April 6, 2017 13:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save LEI/10968635 to your computer and use it in GitHub Desktop.
Save LEI/10968635 to your computer and use it in GitHub Desktop.

Versionnage sémantique et déploiements automatisés

Table des matières

Outils

Consultez les documentations en anglais pour plus de détails sur l'utilisation de ces outils

Aide au cycle d'un projet

Instructions d'installation Mac, Linux, Windows

Installation avec GitHub for Windows (MINGW)

  • Télécharger les deux packages Binaries et Dependencies (util-linux-ng for Windows) et en extraire les fichiers suivant
  • Déterminer le dossier utilisé par git dans le terminal : which git
    • C:\Program Files\Git\bin
    • C:\Users\USER_NAME\AppData\Local\GitHub\PortableGit_...\bin
    • ...
  • Placer les 3 fichiers extraits dans le dossier C:\<git_directory>\bin
  • Se placer dans un dossier quelconque et récupérer les sources git-flow
    • git clone --recursive git://github.com/nvie/gitflow.git
    • Lancer l’interpréteur de commandes Windows avec les droits administrateur
    • Se placer dans le dossier choisit précédemment
    • contrib\msysgit-install.cmd "C:\<git_directory>"
  • Vérifier l’installation
    • git flow help

Déploiement

  • Nécessite l'installation de Ruby sous Windows
  • Exécutez gem install git-deploy dans une nouvelle fenêtre

Workflow

Renseignez vos informations pour identifier vos contributions

git config user.email "votre@addresse.com"
git config user.name "Prénom Nom"

Les accès SSH au serveur pré-prod et prod sont requis : votre clé publique doit être ajoutée dans le fichier .ssh/authorized_keys de l'utilisateur correspondant au vhost sur chaque machine distante.

Nouveau projet

  • Créer et initialiser un dépôt sur Gitlab
  • Se connecter en ssh aux serveurs (pré-prod / prod)
  • Ajouter les utilisateurs via l'interface Gitlab

Récupération d'un projet

  • Récupérer les sources
git clone git@46.18.195.231:root/<project>.git
cd <project>
  • Initialisation de git-flow (création des branches locales master et develop)
git flow init -d
  • Configuration des scripts de déploiement des serveurs distants

Exemple d'adresse à renseigner pour un serveur de pré-production : "<####_uservhost>@46.18.195.231:/www"

git remote add development "<user_vhost>@<preprod>:/www"
git deploy setup -r "development"

Assurez vous que le même projet GitLab soit configuré sur chaque serveur

git remote add production "<user_vhost>@<prod>:/www"
git deploy setup -r "production"
  • Initialisation de git-deploy (création d'un dossier deploy contenant les scripts de déploiement)
git deploy init
  • Note pour récupérer la branche de développement distante
git checkout --track origin/develop

Utilisation des outils

Command Line Arguments

Une fois git-flow installé et le projet configuré, la commande git branch -a permet de lister les branches locales et distantes, tandis que git remote -v affiche les adresses des dépôts distants.

La remote origin regroupe toutes les branches et la liste des tags gérés par git-flow. Les changements peuvent être déployés sur les serveurs en se plaçant sur la branche develop en pré-production (remote development) ou sur la branche master en production (remote production) comme des dépôts distants.

git checkout <branch>
git pull <remote> <branch>
git push <remote> <branch>

git-flow-commands.png

Cheatsheet git-flow by Daniel Kummer

git flow <command> <action> [-F] [-p] <name>

-F fetch from $ORIGIN before performing ...
-p push to $ORIGIN after performing finish

Développement d'une fonctionnalité : feature

Les évolutions sont gérées par git-flow à l'aide des branches feature.

Pour commencer le développement d'une nouvelle fonctionnalité depuis la branche develop, saisir la commande suivante

git flow feature start <name>

Vous êtes automatiquement positionné sur la nouvelle branche locale feature/<name> pour y effectuer les modifications

git add <files>
git commit -m "<message>"

Les outils installés permettent de partager les développements plus conséquents sur le dépôt distant avec d'autres contributeurs

git flow feature publish <name>
git flow feature pull origin feature/<name>

Une fois les changements satisfaisants, la fonctionnalité peut être fusionnée dans la branche develop

git checkout develop
git pull origin develop
git checkout feature/<name>

git flow feature finish -F <name>

Déploiement pré-prod

git push development develop

Correction en production : hotfix

Un bug présent en production peut être rapidement corrigé en créant une branche de type hotfix basée sur master. Les correctifs sont liés à des tags gérés par git-flow, par exemple une correction de la release/1.0 entrainerait la création d'une branche hotfix/1.0.1

git flow hotfix start <X.Y.Z>

...

git add <files>
git commit -m "<message>"

git flow hotfix finish <X.Y.Z>

Déploiement pré-prod

git push development develop

Déploiement prod

git push production master

Déploiement d'une nouvelle version : release

La mise à disposition de nouvelles fonctionnalités sur une branche de type release entraine des tests et recettes. Une branche release/X.Y est créée à partir de develop et est fusionnée à master une fois les modifications effectuées.

git flow release start <X.Y>

...

git flow release finish -F -p <X.Y>

Déploiement pré-prod

git push development develop

Déploiement prod

git push production master
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment