Publication automatique d’un site web statique
En mai, j’ai créé pour le projet Orekit un site web statique généré par xsltproc à partir de documents XML et d’une feuille de style XSL. Le code de ce site web est disponible dans un référentiel Git :
$ git clone https://www.orekit.org/git/orekit-homepage
L’approche peut sembler austère mais elle convient aux geeks en charge de ce
site. Pour que cette méthode séduise vraiment, il fallait la compléter par une
publication automatique du site web généré. Pour ce faire, j’ai créé un hook
(un script lancé automatiquement par Git) de type post-receive
sur le
serveur Git d’Orekit. Le hook portant ce nom est exécuté après réception d’une
contribution en provenance d’un autre référentiel :
#!/bin/sh
export PATH=/bin:/sbin:/usr/bin:/usr/sbin
export GIT_WORK_TREE=/home/git/build/orekit-homepage
export GIT_DIR=.git
cd $GIT_WORK_TREE
git pull
if make all ; then
echo "Successful build"
if make install ; then
echo "Web site updated"
exit 0
else
echo "ERROR: Web site update failed"
exit 2
fi
else
echo "ERROR: Web site build failed"
exit 1
fi
Ce script est enregistré dans le référentiel Git du serveur sous le nom
hooks/post-receive
. Il doit être exécutable :
$ sudo chmod 755 path/to/orekit-homepage.git/hooks/post-receive
Dès lors, toute réception d’un commit déclenche successivement :
-
la mise à jour d’une copie de travail du référentiel, distincte du référentiel de type bare dans lequel le hook a été créé ;
-
la génération des pages statiques, la commande Make ne générant que les pages HTML plus anciennes que leur source XML ;
-
la publication de la nouvelle version du site web par copie des fichiers le constituant dans l’arborescence d’Apache.
Pour fonctionner, cette méthode nécessite un amorçage qui est la création manuelle du clone dans lequel le site web va être généré. Ce clone est créé dans l’espace de travail du compte Git :
$ sudo -u git git clone /home/git/repositories/orekit-homepage.git \
/home/git/build/orekit-homepage
L’autre étape consiste à attribuer à ce même compte Git l’arborescence d’Apache correspondant à ce site statique :
$ sudo chown -R git:git /var/www/www.orekit.org