Git : Pull automatique du dernier push

Lorsque vous avez pratiqué suffisamment Git, à savoir pusher vos modifications et ensuite puller sur votre serveur de production, vous aurez un peu marre de ces manipulations répétitives que vous faites peut être une centaine de fois dans la journée.

La solution à votre problème si vous utilisez Github.com c’est d’utiliser les webhooks. Un prérequis à cette méthode est d’être en mode SSH pour pusher en ssh.

C’est quoi un webhook?

Un webhook est une page web (donc une url bien spécifique) qui sera appelée par Github. Elle sera appelée quand un événement se produit, en ce qui nous concerne c’est lorsqu’on push une branche vers Github, en ce qui  nous concerne c’est la branche master.

Comme cette page web est chargée, le script qu’il contient sera également exécuté, un peu comme les CRON job. Que doit contenir cette page? Je prends comme exemple un workflow où vous développez en php sous Windows, et que votre serveur de production est Linux. Ce que j’ai l’habitude de faire c’est quand j’ai mergé en local une branche feature avec ma branche master, je pousse la branche master vers Github. Ensuite je vais sur le serveur de production, je me connecte en tant que propriétaire du vhost en question (pas en root), et je fait un git pull pour avoir la dernière version du master.

Créer le webhook

C’est cette dernière étape qu’on va coder en php sur une page webhook que je vais appeler git.php, voici le code à l’intérieur:

<?php `git pull` ?>

Enregistrez votre fichier à la racine de votre serveur web de sorte qu’elle soit accessible de l’extérieur.

Les backticks (apostrophe inversés) servent à exécuter une commande shell dans un fichier php. Le fait d’appeler ce fichier php est équivalent à exécuter en mode console un git pull.

Configurer Github pour appeler cette page php

Allez sur votre répository sur Github.com, ensuite cliquez « Seeting », et puis sur la barre latérale « webhook ». L’exemple ci-dessous s’appuiera sur un événement de type push, c’est à dire que lorsque vous pusher vers votre repository, Github va envoyer une requête de type GET vers la page php que vous lui indiquez.

webhook avec Github

Bienb sûr vous pouvez faire plus de paramétrage, en cochant le dernier radio button, vous verrez tout un tas d’options, ce sont des choses plus sophistiquées que vous utiliserez sans doute avec un orchestrateur comme Jenkins.

Retour en haut