使用 post-receive 钩子自动更新 Ruhoh 博客

12 Aug 2012

Ruhoh 这个新生的东西还在缓慢的发展之中, 所以还没有成熟的 Hosting 方案出台, 官方只提供了一个基于 Github Webhook 的, 在 USERNAME.ruhoh.com 这个三级域名下的托管方案. 不过幸运的是, 在 Jekyll Custom Deploy Options 的帮助下, 我对 Jekyll 提供的 Git Post-receive hook 稍微修改之后就能直接使用了. 下面直接上干货:

#!/bin/bash
export PATH=$HOME/bin:$HOME/.rvm/bin:$PATH
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

GIT_REPO=$HOME/ruhoh_blog/repo/crhan
TMP_GIT_CLONE=`mktemp -d`
PUBLIC_WWW=$HOME/ruhoh_blog/www/blog.crhan.com

git clone $GIT_REPO $TMP_GIT_CLONE
cd $TMP_GIT_CLONE
ruhoh compile $PUBLIC_WWW
rm -Rf $TMP_GIT_CLONE
exit

说明一下, 因为我是用 RVM 安装的 Ruby, 所以需要在二三两行先应用一下 RVM 设置.

另外还有一点很重要: 如果第一行的 shebang 写的是 #!/bin/sh 的话, RVM 会无法载入, 这大抵是兼容性问题

参考资料: Jekyll Deployment Post-receive Hook

comments powered by Disqus