[GIT] hooks
lundi 29 janvier 2018Git 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/ProductionEnfin, 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-updatOn rajoute le code suivant dedans:
#!/bin/bash echo "********** mise en production *********" cd /var/www/Production unset GIT_DIR git pull origin masteron 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 !