Déployer son site statique automatiquement avec un script bash
Netlify permet, entre autre entre, de se brancher à Github et de builder ton site statique automatiquement à chaque commit et de le déployer sur un serveur. Ce service est vraiment top car tu n’as rien à faire. Netlify s’occupe de tout.
C’est génial mais tu n’as pas forcément envie de dépendre d’un service tiers de plus. Ou alors comme moi, tu héberge toi-même ton serveur web.
J’ai une solution low tech à base de Crontab qui ne demande aucune dépendance: un script Bash. Assez basiquement il s’occupe de:
- faire un
git pull
si nécessaire - rebuild le site avec Jekyll
- mettre à jour les sources du site
Ca tiens en 13 lignes de code. Voilà ce que ça donne:
#!/bin/bash
git fetch origin
LOCAL=$(git rev-parse @)
REMOTE=$(git rev-parse "@{u}")
if [ "$LOCAL" != "$REMOTE" ] || [ "$1" = "force" ]; then
git pull origin master
npm ci
npm run build
rm -rf /var/www/portfolio/*
cp -r dist/* /var/www/portfolio/
cp -r dist/.well-known /var/www/portfolio/
else
echo "Deployment skipped"
fi
Ce fichier est versionné avec mon projet Jekyll, je l’ai sobrement appelé deploy.sh
et il est situé à la racine du projet.
Il suffit ensuite d’appeler ce script toutes les heures par exemples en mettant en place un CRON. Pour l’installer, il suffit de lancer la commande:
crontab
et ensuite copier / coller la ligne suivante (en adaptant à ton cas spécifique).
0 * * * * cd /home/pi/portfolio && ./deploy.sh
Et voilà, c’est terminé.
La seule limitation est le délais de latence vu que le CRON ne se lance que toutes les heures. On pourrais modifier le CRON pour l’executer toutes les minutes mais le mieux serais d’écouter un webhook de Github lors de la création d’un commit et relancer le build. C’est l’idéal mais c’est plus compliqué et du coup c’est un peu exagéré pour mon usage. Ca fait le taff et c’est très bien.
Voir les autres articles liés
Envoyer des statistiques de ton site en respectant la vie privée de tes utilisateurs avec GoAccess.