Auto-update d'un site statique avec Pelican

Publié le 05/06/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:

  • Matt McManus - How I set up, designed, and published this website <http://www.mamcmanus.com/posts/how-i-built-this-site>_
  • Matt McManus - Setting up a Pelican site under your own domain using Amazon S3 <http://www.mamcmanus.com/posts/amazon-s3-pelican-site>_
  • Better Pelican hosting with Amazon S3 and CloudFront <https://pmac.io/2014/06/pelican-s3-cloudfront/>_
  • Setting Up a blog with Pelican and Amazon S3 <http://lexual.com/blog/setup-pelican-blog-on-s3/>_
  • Moving to Amazon S3 <http://cbudjan.com/2013/06/amazon-s3/>_
  • Amazon S3 Versioning - What, how and why? <https://linuxacademy.com/blog/amazon-web-services-2/amazon-s3-versioning-what-how-why/>_

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