Deploy di Pelican su GitHub e githook

Tags : git githook pelican

Sto ancora giocherellando con Pelican e cercavo un modo per committare i nuovi post UNA volta sola, senza dover committare una seconda volta gli html generati.

Ci sono riuscito abbastanza facilmente, ecco come:

Prerequisiti:

Cominciamo:

Setup dell'ambiente

Apriamo una shell e scriviamo

pip install virtualenvwrapper
mkvirtualenv pelican
pip install pelican markdown

e dovremmo avere un virtualenv con pelican pronto all'installazione.

God bless virtualenvwrapper

Ora creaimo la cartella dove installeremo pelican:

mkdir pelican
cd pelican
pelican-quickstart

a sto punto partirà l'installazione vera e propria, rispondete a tutte le domande ed è fatta.

Deploy su GitHub

Su GitHub creiamo due nuovi repository con nome username.github.io e username.github.io-source, (dove username è chiaramente il vostro username di github).

Quello "-source" potete chiamarlo come vi pare.

Ora linkiamo il "-source" alla folder nella quale abbiamo appena installato pelican e committiamo tutto

git init
echo "output" > .gitignore
git remote add origin [email protected]:username/username.github.io-source.git

dopodichè creiamo un submodule nella cartella output con

git submodule add -f [email protected]:username/username.github.io.git output

a questo punto entriamo nella folder .git\hooks e creiamo il "trigger" che rigenererà il sito ad ogni push e committerà i file statici sul repository html

creiamo quindi un nuovo file "pre-push"

#!/bin/sh
cd output
git fetch --all
find * -maxdepth 0 -name '.git' -prune -o -exec rm -rf '{}' ';'
cd ..
pelican content -s publishconf.py
cd output
git add --all .
git commit -am "automatic commit"
git push origin master

exit 0

adesso, tornando nella root di pelican potremmo fare

git add .
git commit -am "hello pelican"
git push origin master

e se tutto è ok, dovrebbe partire da sola la seconda commit/push sul repository statico!

Comments !