C’est bien beau d’héberger le blog sur amazon S3 mais à l’origine je voulais une solution automatique, qui fasse tout après un commit. Malheureusement codecommit ne permet pas de lancer lambda après un commit. Et puis j’ai mis à jour mon instance gitlab et j’ai découvert les nouveaux services…
Depuis quelques versions (la 8.0) une chaîne d’intégration continue est disponible dans gitlab. À chaque commit un script est lancé sur une machine. C’est exactement ce qu’il faut pour générer automatiquement le site. En plus maintenant gitlab héberge gratuitement les projets et propose la chaîne d’intégration !
Il ne me reste donc plus qu’à déplacer l’entrepôt git de codecommit à gitlab et à écrire le fichier .gitlab-ci.yml qui va bien.
# .gitlab-ci.yml
image: publysher/hugo
production:
type: deploy
before_script:
- apt-get update
- apt-get install -y locales
- echo "en_US UTF-8" > /etc/locale.gen
- locale-gen en_US.UTF-8
- export LANG=en_US.UTF-8
- export LANGUAGE=en_US:en
- export LC_ALL=en_US.UTF-8
- apt-get -qq install python python-pip ca-certificates
- pip install awscli
script:
- hugo
- aws s3 sync public/ s3://$AWS_BUCKET
artifacts:
paths:
- public
only:
- master
Pour que le script fonctionne il faut définir quelques variables dans les paramètres du projet git :
- AWS_ACCESS_KEY_ID
- AWS_SECRET_ACCESS_KEY
- AWS_REGION
- AWS_BUCKET
Les clefs correspondent aux clefs d’un utilisateur aws ayant accès au bucket S3. La région et le bucket sont la région (eu-west-1) et le nom du bucket.
Le script indique à gitlab CI d’utiliser l’image docker publysher/hugo, d’installer quelques dépendances avant de lancer la commande hugo pour générer le site et s3 sync pour l’envoyer chez amazon.
Je pourrais suivre la même procédure pour héberger le site sur GitLab Pages plutôt que sur amazon S3.