Jekyll Auto-Build With Git Hooks
tl;dr: Use the full path to your jekyll
executable when running it from a git hook.
As much as I love Jekyll for it’s nerdiness and it’s speed, as much can it be annoying at times when you have to “compile” your website and upload it to your server every time you fix a comma. This situation lends itself to get automated.
First things first: I host my website on Uberspace. I mentioned before that they’re just the best, right1? Anyway, at Uberspace, they don’t have Jekyll pre-installed so you have to install it yourself. And since you can’t just install it for the entire machine, you have to install it on a per-user basis:
gem install --user jekyll
This allows you to still run jekyll
from the terminal as you normally would. However, this doesn’t seem to apply when working executing a post-receive
git hook included in your server repository.
Therefore, I had to enter the full path2 to the jekyll
executable to the example provided on the official Jekyll site. So, what I ended up with looks like this:
GIT_REPO=$HOME/git/flohei.de.git
TMP_GIT_CLONE=$HOME/tmp/myrepo
PUBLIC_WWW=$HOME/html
git clone $GIT_REPO $TMP_GIT_CLONE
cd $TMP_GIT_CLONE
~/.gem/ruby/1.9.1/bin/jekyll build -s $TMP_GIT_CLONE -d $PUBLIC_WWW
rm -Rf $TMP_GIT_CLONE
exit
I assume that this applies to any setup where you’re not able to install software on a machine-level but only on your user account. So feel free to drop me a line if this helped you, even with another setup.
If you can see this post, this means that this system is working as intended.