トップ «前の日記(2011/01/22 (土) ) 最新 次の日記(2011/01/24 (月) )» 編集 RSS feed

HsbtDiary


2011/01/23 (日) [長年日記]

[ruby][hudson][rvm][gentoo] Gentoo + rvm + hudson で CI サーバーを作った

tDiary は 1.8.7 と 1.9.2 のサポートをしていると言ってるわりには両方の環境でかっちりとテストを実行していたりするわけではないので、rvm と hudson でかっちりとテストを実行するようにしてみた。

そんなわけで出来たのがこれ → http://ci.hsbt.org

わりとはまった箇所があるのでメモしておくよ。

Gentoo に hudson を入れる

godin というレポジトリにgentoo用の hudson があるのでそれを使った。これは layman を使うことにした。

上記の手順にしたがって、layman.cfg を編集してから

layman -L
layman -a godin
eix-sync
emerge -avuD dev-util/hudson-bin

でセットアップはおしまい。

hudson ユーザーで rvm を使える用にする

続いて 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 で環境変数を設定する

後は 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 でプロジェクトを設定

ここまで来てようやく hudson でビルドを実行できるようになる。基本的にはシェルを実行だけで全て終わらせることにする。

source $HOME/.rvm/scripts/rvm
rvm use 1.8.7
bundle
bundle exec rake spec

こんな感じ。できれば、source をシェル実行ではなくて hudson ユーザー共通の処理としたいんだけど、とりあえずはこれで動いているので良しとする。