Par Jean-Baptiste, le 21/07/2017
Voici les étapes pour le déploiement de notre site via l'outil CI intégré de gitlab, j'ai nommé Gitlab Pages.
Ajouter un fichier .gitlab-ci.yml
.
Vous pouvez en générer un depuis un modèle directement depuis l'interface.
Attention celui généré pour pelican contient un "image: python2.7-alpine". Cette option n'est utile que si votre instance de Gitlab est configurée pour utiliser Docker. Ce qui n'est pas le cas chez nous pour le moment. Mais ça va venir rapidement.
Si vous n'utilisez pas Docker sur votre instance de Gitlab comme nous, vous devez installer python 3 "en dur" si votre pelican utilise python 3.
Vous devez aussi installer sur le serveur toutes les dépendances de votre projet, le "runner" de gitlab n'ayant pas les droits pour installer les dépendances python sur la machine.
Nous hébergeons notre site sur un autre serveur que celui de notre instance
Gitlab. Nous utilisons donc la commande pelican: make rsync_upload
pour construire
le site et l'envoyer via rsync & ssh sur l'autre serveur.
Nous avons donc généré une clef ssh pour l'utilisateur gitlab-runner
(sous Ubuntu):
sudo su gitlab-runner
ssh-keygen
que nous avons copiée sur le serveur servant le site (derrière nginx compilé avec le module pagespeed).
Ne pas oublier d'ouvrir les ports nécessaires sur les firewall, et tout roule !
A chaque commit & push sur la branche master
le site est reconstruit et
poussé sur le bon serveur.
Le fichier de configuration de l'intégration continue est donc minimal:
stages:
- build
- upload
build:
stage: build
script:
- make publish
only:
- master
upload:
stage: upload
script:
- make rsync_upload
only:
- master
Le "stage" nommé "pages" est réservé par gitlab et déclenche une copie en locale pour être servi par le nom de domaine des pages statiques Gitlab.
J'ai donc ajouté manuellement les 2 étapes (la dernière aurait suffit car le Makefile régénère le site avant upload).
Jean-Baptiste