Ich betreibe dieses Blog auf Uberspace mit Jekyll. Hier möchte ich nun kurz mein Setup dokumentieren.
Jekyll ist ein Static Page Generator, d.h. ich lege Markdown Dateien für jeden Blogpost an und daraus wird dann in einem Generator-Schritt die statische Webseite generiert.
Zunächst einmal habe ich zu Hause auf meinem Laptop meine komplette Jekyll Seite in einem Git Repository. Hier kann ich Einstellungen machen, Posts anlegen oder Styles der Seite konfigurieren. Will ich mir den aktuellen Stand der Seite lokal generieren lassen, kann ich das mit jekyll serve
auf einem lokalen Webserver tun.
Bin ich damit zufrieden, fällt der aktuelle Stand in ein Commit in Git. Das lade ich dann mittels git push deploy master
in meinen Uberspace Account. Dabei ist deploy
als Git Remote so eingerichtet, dass es auf i42n@auriga.uberspace.de:~/funkenstrahlen.de.git
zeigt.
In ~/funkenstrahlen.de.git
auf Uberspace liegt bei mir ein bare Repository. Das kann man mit git init --bare funkenstrahlen.de.git
anlegen. Bare sorgt dafür, dass kein Branch und damit keine Dateien ausgecheckt werden.
Nach dem git push
liegen die Daten auf Uberspace. Nun muss nur noch der Generator von Jekyll angestoßen werden. Das passiert über ein Git Hook. Davon finden sich einige in funkenstrahlen.de.git/hooks
:
applypatch-msg.sample
post-commit.sample
post-receive.sample
pre-applypatch.sample
prepare-commit-msg.sample
update.sample
commit-msg.sample
post-receive
post-update.sample
pre-commit.sample
pre-rebase.sample
In diesem Fall ist post-receive
der interessante Hook.
source ~/.bash_profile
GIT_REPO=$HOME/funkenstrahlen.de.git
TMP_GIT_CLONE=$HOME/tmp/funkenstrahlen.de
PUBLIC_WWW=$HOME/web/funkenstrahlen.de
git clone -b master $GIT_REPO $TMP_GIT_CLONE
jekyll build -s $TMP_GIT_CLONE -d $PUBLIC_WWW
rm -Rf $TMP_GIT_CLONE
exit
Hier passiert die ganze Arbeit:
- Das bare Repository clonen und damit den aktuellen funkenstrahlen Branch auschecken.
- Mit Jekyll die Seite bauen und das Web Verzeichnis von Uberspace kopieren
- Aufräumen
So kann ich relativ einfach neue Posts veröffentlichen:
- Mit
rake post
neuen Post anlegen und schreiben - Den neuen Post mit
git add -A
undgit commit -m 'neuer Post'
zu Git hinzufügen - Seite deployen via
git push deploy master
Einziger kleiner Nachteil: Geht beim Jekyll Build auf Uberspace etwas schief, kann man einen weiteren Build nur auf diesem Weg anstoßen, wenn sich im Git Repository etwas geändert hat. Ich muss dann einen “unnötigen” Commit erzeugen, um noch einmal git push
ausführen zu können. Das passiert aber zum Glück selten.
Das Design des Blogs ist ein Fork von diesem Jekyll Template. Das Type Theme ist auch ganz hübsch.