Nachdem ich nun mit meinem ganzen Webgedöns zu den netten Leuten von Uberspace gewechselt bin, habe ich natürlich nun auch alles in einem Git liegen, das ich über ssh erreichen kann. Nach jedem Deployment läuft über einen hook ein kleines Script ab, in dem Jekyll angeworfen wird und der ganze Kladderadatsch an den Webserver übergeben wird.

Doch was, wenn der ganze Kladderadatsch gar nicht ins Web soll?

Das grundsätzliche Setup habe ich mir auf funkenstrahlen.de abgeschaut. Danke dafür, klappt ganz toll!

Meine Version sieht so aus:

#!/bin/bash -l
GIT_REPO=$HOME/Projects/persoenliche-notizen.de.git/
TIMESTAMP=`date +%s`
TMP_GIT_CLONE=$HOME/tmp/git/blogname
TMP_GIT_CLONE+="-"$TIMESTAMP
PUBLIC_WWW=/var/www/virtual/$USER/persoenliche-notizen.de

git clone $GIT_REPO $TMP_GIT_CLONE

if [ -e $TMP_GIT_CLONE/_deploy_me ]
then
    echo "Going ahead with the deployment"
    cd $TMP_GIT_CLONE && bundle install --path=_vendor/bundle # Keine Lust auf Paketquatsch
    bundle exec jekyll build --source $TMP_GIT_CLONE --destination $PUBLIC_WWW 
else
    echo "file _deploy_me not found in jekyll dir, so no deployment."
fi
rm -Rf $TMP_GIT_CLONE
exit

Der einzige wirkliche Unterschied ist an der Stelle die IF-Schleife. Hier wird überprüft ob die Datei _deploy_me im Jekyll-Verzeichnis existiert. Ist die Datei vorhanden, wird alles in den Webserver geschoben. Ist die Datei nicht vorhanden, passiert: nüscht.

Der Dateiname mit dem vorangestellten Unterstrich sorgt dabei dafür, dass die Datei nicht in der eigentlichen Seite landet.

Wahrscheinlich kann man das auch irgendwie eleganter umsetzen, eventuell in Form von irgendwelchen Git-Spezialitäten. Aktuell funkitoniert diese Version allerdings ohne Probleme und tut genau das, was sie soll.