tDiary は 1.8.7 と 1.9.2 のサポートをしていると言ってるわりには両方の環境でかっちりとテストを実行していたりするわけではないので、rvm と hudson でかっちりとテストを実行するようにしてみた。
そんなわけで出来たのがこれ → http://ci.hsbt.org
わりとはまった箇所があるのでメモしておくよ。
godin というレポジトリにgentoo用の hudson があるのでそれを使った。これは layman を使うことにした。
上記の手順にしたがって、layman.cfg を編集してから
layman -L layman -a godin eix-sync emerge -avuD dev-util/hudson-bin
でセットアップはおしまい。
続いて hudson ユーザーでログインしなおして rvm をインストールする。
sudo su - hudson bash < <( curl http://rvm.beginrescueend.com/releases/rvm-install-head ) rvm install 1.8.7 rvm use 1.8.7 gem install bundler rvm install 1.9.2 rvm use 1.9.2 gem install bundler
gemsets とかはめんどいので特に使わない。基本的には bundler 経由で gem を扱うようにする。それ以外のは使う時に考える。
後は hudson でふつーにプロジェクトを作るだけなんだけど、gentoo の hudson はシェルの実行が hudson ユーザーの割には $HOME が /root と rvm では死ぬような環境変数となっているので、hudson のグローバルプロパティで HOME を /var/lib/hudson に設定し直した。
後は gentoo では RUBYOPT を無効にしないと rvm を使うことができないので、こちらもグローバルプロパティを使って RUBYOPT を""にした。
さらに 1.9.2 ではマジックコメントや default_internalが設定されていないファイルはシステムの locale を見てエンコーディングを設定していたりするので、LANGをja_JP.UTF-8にした。
ここまで来てようやく hudson でビルドを実行できるようになる。基本的にはシェルを実行だけで全て終わらせることにする。
source $HOME/.rvm/scripts/rvm rvm use 1.8.7 bundle bundle exec rake spec
こんな感じ。できれば、source をシェル実行ではなくて hudson ユーザー共通の処理としたいんだけど、とりあえずはこれで動いているので良しとする。