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 :

1$ 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 :

 1#!/bin/sh
 2export PATH=/bin:/sbin:/usr/bin:/usr/sbin
 3export GIT_WORK_TREE=/home/git/build/orekit-homepage
 4export GIT_DIR=.git
 5
 6cd $GIT_WORK_TREE
 7git pull
 8if make all ; then
 9    echo "Successful build"
10    if make install ; then
11        echo "Web site updated"
12        exit 0
13    else
14        echo "ERROR: Web site update failed"
15        exit 2
16    fi
17else
18    echo "ERROR: Web site build failed"
19    exit 1
20fi

Ce script est enregistré dans le référentiel Git du serveur sous le nom hooks/post-receive. Il doit être exécutable :

1$ 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 :

1$ sudo -u git git clone /home/git/repositories/orekit-homepage.git \
2                        /home/git/build/orekit-homepage

L’autre étape consiste à attribuer à ce même compte Git l’arborescence d’Apache correspondant à ce site statique :

1$ sudo chown -R git:git /var/www/www.orekit.org