Auto-update d'un site statique avec Pelican

Publié le 5 juin 2016

Petite mise à jour du script du 26 juillet 2013, puisque j’ai déménagé le serveur depuis un petit temps et que je passe dorénavant par Nginx. Du workflow, je conserve le lien avec Git et la centralisation dans un Gitlab. Pour la publication, je garde la génération automatique, mais uniquement si le dépôt a été mis à jour.

Bon, à un moment, j’ai pensé déplacer le contenu statique vers Amazon S3 <https://aws.amazon.com/fr/s3/>_, avec un petit pointeur DNS vers le bon noeud. Il y a pas mal de ressources utiles sur ce point, je vous laisse donc faire votre shopping, mais ayant un serveur à disposition, j’ai +/- laissé tomber. Vous trouverez déjà tous les liens rassemblés ci-dessous:

Le script ressemble à ceci:

#! /usr/bin/env bash

git fetch origin
reslog=$(git log HEAD..origin/master --oneline)

if [[ "${reslog}" != "" ]] ; then
    echo "Updating pelican-site"
    git merge origin/master
    virtualenv -p /usr/bin/python3 .
    source bin/activate
    pip install -r requirements/base.txt
    pelican
fi

Pour son exécution, j’ai ajouté une ligne dans Cron:

30 * * * * /var/www/{site_name}/update_site.sh

Nginx pointe alors vers le répertoire output, qui sera généré par Pelican.

Sources