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
# deploy.sh
UPSTREAM=${1:-'@{u}'}
LOCAL=$(git rev-parse @)
REMOTE=$(git rev-parse "$UPSTREAM")
BASE=$(git merge-base @ "$UPSTREAM")
git fetch origin
if [ $LOCAL = $BASE ]; then
git pull origin master
/home/pi/.rvm/gems/ruby-2.4.0/wrappers/jekyll build
rm -rf /var/www/portfolio/*
cp -r _site/* /var/www/portfolio/
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.