Déployer Hugo sur un FTP avec Gitlab
Introduction
Pour un nouveau projet de blog, j’ai choisi HUGO (https://gohugo.io/) avec un nom de domaine pris sur OVH, incluant gratuitement un petit espace d’hébergement, mais suffisant pour ne publier que du HTML/CSS.
Ici nous allons voir, non pas comment se servir d’HUGO, mais uniquement comment déployer le projet automatiquement sur un hébergement qui n’offre qu’un accès en FTP.
Déploiement automatique sur un FTP
On va faire simple, j’ai mon projet GIT sur une instance GITLAB et lorsque je push sur master
la pipeline se déclenche pour compiler et déployer sur le FTP.
Nous allons donc créer un fichier .gitlab-ci.yml
à la racine du dépôt, comme ceci :
image: hugomods/hugo:latest
variables:
GIT_SUBMODULE_STRATEGY: recursive
stages:
- build
- deploy
build:
stage: build
script:
- mkdir -p public
- hugo
artifacts:
paths:
- public/
only:
variables:
- $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
deploy:
stage: deploy
script:
- apk update
- apk add lftp
- lftp -e "set ftp:ssl-allow no; open $FTP_HOST; user $FTP_USERNAME $FTP_PASSWORD; mirror -X .*/ --reverse --verbose public/ www/; bye"
only:
variables:
- $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
Quelques explications :
image: hugomods/hugo:latest
: l’image docker que nous allons utiliserGIT_SUBMODULE_STRATEGY: recursive
: permet de télécharger les thèmes associés$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
: permet de déclencher la pipeline uniquement sur la branche principalapk add lftp
: comme on est sur une alpine, on télécharge lftp avecapk
lftp -e "set ftp:ssl-allow no; open $FTP_HOST; user $FTP_USERNAME $FTP_PASSWORD; mirror -X .*/ --reverse --verbose public/ www/; bye"
: c’est ici que tout se passe, on va synchroniser le répertoire de build avec notre FTP distant.
Le script est à adapter selon votre besoin mais il fonctionne en l’état.
N’oubliez pas d’ajouter les variables $FTP_HOST
, $FTP_USERNAME
et $FTP_PASSWORD
avec leurs valeurs dans GITLAB, au niveau du projet (Settings > CI/CD > Variables).
A bientôt, et bon déploiement !
Sources :
https://docs.gitlab.com/tutorials/hugo/
https://hub.docker.com/r/hugomods/hugo/tags?name=latest
https://dev.to/costalfy/utilisez-gitlab-com-pour-deployer-automatiquement-votre-site-web-hugo-37k5