Fun with git & Middleman December 22, 2014

in code, meta

git post-receive hooks are fun. I use to use them at drop.io to trigger our Jenkins’ builds. IIRC, the builds were triggered by hitting a specified URL.

If you, like me, are self-hosting a middleman blog as well as your own git repos you can add a post-receive hook to automatically generate the static site.

#!/bin/sh

export PATH=/home/USER/.rbenv/shims:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:$PATH

GIT_WORK_TREE=/path/to/www/
export GIT_WORK_TREE
git checkout -f

cd $GIT_WORK_TREE

bundle install

bundle exec middleman build

rbenv manages my Rubies for my deployment user (e.g. www-data). rbenv can be used to manage rubies system wide, however it is rightly discouraged. Since the git user is executing the receive hook, above (just a shell script) the user needs access to the bundle command. Just force it to work with above copying over the shim paths.

All for now. Middleman is nice.