Carnet Wiki

Utiliser git pour pusher les mises à jour vers un site en production

Version 5 — 3 months ago nicod_

Principe:

Créer un dépôt git bare sur le serveur de production avec un hook post commit qui publie ce qu’il reçoit dans le répertoire de prod. :

Sur le serveur cible :

Créer le repo git bare:
<code <cadre class=“bash”>
mkdir mon_plugin monsite .git
cd mon_plugin monsite .git
git init bare
</
code >

Ajouter un hook post receive :

vi hooks/post-receive

Contenu du fichier :

#!/bin/bash
git --work-tree=/var/www/mon_site/mon_plugin --git-dir=/var/repo/mon_plugin.git checkout -f

<blockquote class="spip_poesie">
git init —bare
</blockquote>

Ajouter un hook post receive :

  1. nano hooks/post-receive


#!/bin/bash
git —work-tree=/var/www/mon_site —git-dir=/var/repo/monsite.
git checkout - f
</
cadre >
Passer le fichier en exécutable :
<
code class=“bash ”>
chmod <cadre class=“bash”>chmod +x hooks/post-receive
</
code hooks/post-receive</cadre >

En local

Ajouter le dépot distant “prod” :
<code class=“bash ”>
git <cadre class=“bash”>git remote add prod ssh://user@monserveur.fr/home/user/mon_plugin fr/home/user/monsite .git
</
code git</cadre >

Pour publier sur la production :
<code class=“bash ”>
git cadre class=“bash”>git push prod master
</
code master</cadre >

Le hook va alors copier le code du dépôt qu’il vient de recevoir dans le répertoire /var/www/mon_site/mon_plugin.

Voir aussi : https://blog.alwaysdata.com/fr/2018/02/05/deployer-sans-peine-avec-git-hooks/
qui détaille la procédure avec notamment un script post commit un peu plus évolué (vérification de la branche poussée par exemple)