CruiseControl.rb で Continuous Integration
・準備
http://rubyforge.org/frs/?group_id=2918 より最新版のパッケージを取得し、$/HOME で解凍
% cd ~/ % tar xvzf cruisecontrol-1.4.0.tgz
以上で終了!!
※Railsアプリなので、RubyGemsが必要。
必須ではないが、Rakeが入れてあると更に便利
・プロジェクトを登録
% cd cruisecontrol-1.4.0 % ./cruise add プロジェクト名 --url--username <ユーザー名> --password <パスワード>
※ Mercueialを使用するときは、 --source-control hg を指定する
以下のディレクトリ構造でファイル群が生成される
$HOME/.cruise .. cruisecontrolのデータディレクトリ + projects/プロジェクト名 ... 登録したプロジェクト + work ... 指定したsvnリポジトリをチェックアウトしたもの
※ $HOME/.cruise を変更するには、環境変数 CRUISE_DATA_ROOT を定義する
・設定ファイルの編集
$HOME/.cruise/projects/プロジェクト名/cruise_config.rb がビルドタスクの設定ファイル
シェルスクリプトを走らせる場合は、下記のように記述する
Project.configure do |project| project.build_command = './foo.sh' #※ $HOME/.cruise/projects/project-name/work がカレントディレクトリ end
・サーバー起動
% LANG=C ./cruise start
daemonとして起動するときは、
% LANG=C ./cruise start --daemon
http://localhost:3333 でプロジェクトビューに。
メールの設定をする
ローカルにメールサーバーが立ち上がっていない場合は、下記の設定を行う。
・~/.cruise/site_config.rbでSMTPを設定
ActionMailer::Base.smtp_settings = { :address => "xx.xx.xx.xx" }
※変更後は、CruiseControlを再起動する必要がある
・メールヘッダを変えるには
ユーザーが変える手段は用意されていないので、ソースを直接変更する
app/models/build_mailer.rb 4行目
@subject = "[CruiseControl] #{subject}"
の部分を変更する
Subversionの更新時のタイムゾーン修正
Subversion更新ログの +0900 部分がシカトされているので、無理矢理補正
lib/source_control/subversion/revision.rb
@author, @time, @message, @changeset = author, time, message, changeset + @time = @time.new_offset(Rational(9,24)) if @time end
■参考
http://journal.mycom.co.jp/articles/2007/03/28/CruiseControlrb/index.html
http://w.koshigoe.jp/study/?[CI]%20CruiseControl.rb