[GIT] hooks

lundi 29 janvier 2018

Git nous propose aussi une série de hook disponible que l’on peut utiliser pour lancer des scripts.
Il existe des hooks côté client (pre-) et coté serveur (pos-).
Très utile par exemple pour chaque fois exécuter des actions avant un commit (pre-commit) localement par exemple et aussi déployer sur le serveur après un push par exemple (post-update).

Si votre remote repository est sur le même serveur que votre serveur de production, il est possible d’automatiser au travers d’un hook la mise à jour de votre serveur live.

Voici un exemple d’utilisation de hook pour le push:

mkdir /home/user/MonProjet.git
cd /home/user/MonProjet.git
git --bare init

Ensuite localement, vous crééer un remote vers votre nouveau repository remote.

git remote add nom_projet ssh://url_git:/chemin_repository/<name_repo>.git

Et enfin vous passer tout votre historique et fichier sur ce repository remote:

git push origin master

Maintenant toujours sur votre serveur vous cloner votre projet dans un dossier qui contiendra le site live:

git clone /home/user/MonProjet.git /var/www/Production
Enfin, on peut créer un hook qui a chaque push depuis votre sreveur en locale va mettre à jour votre site web live
vi /home/user/MonProjet.git/hooks/post-updat
On rajoute le code suivant dedans:
#!/bin/bash
echo "********** mise en production *********" 
cd /var/www/Production 
unset GIT_DIR
git pull origin master
on oublie pas de rendre ce fichier exécutable:
chmod +x /home/user/MonProjet.git/hooks/post-update

Et voilà le tour est joué quand on fera un push localement on verra dans le terminal notre commentaire mise en production et nos changements push depuis la branche master seront appliqués sur votre site en production directement!!

Par contre si comme moi la plupart du temps votre repository remote ne se trouve pas sur le même serveur que le site, il est mieux de créer alors un fichier bash qui se chargera de se connecter en ssh sur le serveur de production et qui fera un pull origin master.

Et vous lancerez soit ce fichier après avoir pusher localement vos changements soit vous pouvez mettre ce script sur le serveur repository remote et faire un hook post-update qui exécute ce script !

Tags: Déploiement , Git