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