CIAをちょっと使ってみた
とりあえずセットアップはできたので、ブラウザからCIAでプロジェクトを登録する。
プロジェクト名、リポジトリへのパス(末尾に/なし)、プロジェクトへのパス(リポジトリからの相対パス)、お知らせ先メールアドレスを入力すればOK。
ちなみにプロジェクトへのパスは、チェックアウト先のパスではなくて、リポジトリ上のパスね。CIAはこのパスからチェックアウトしたものをRailsアプリとして扱うらしい。
次はSVNのフックスクリプトを書く。
/path/to/repository/hooks に post-commitというスクリプトを用意すると、それがコミット後に実行されるわけだけど、テンプレートが用意されているので、それをまずコピー。僕の環境では、どこだかにメールを送りそうなPerlスクリプトを呼び出す記述があったのでコメントアウトして、script/runner でCIAを呼び出す記述を追加。
# export PATH=/usr/bin:/bin export RAILS_ENV=production cd YOUR-CIA-SOURCE script/runner "Agent.build(\"$REPOS\", $REV)"
PATHは設定する必要がなかったのでコメントアウトした。YOUR-CIA-SOURCEはCIAをインストールしたディレクトリね。
で、試しにSubclipseからコミットしてみると、ずっとコミット中・・・・
考えてみたら、script/runner で呼び出しているAgentは、適当なディレクトリにSVNからプロジェクトをチェックアウトして、それのテストを実行する訳だけど、テストに時間がかかったりすると、その間はコミット中になっちゃうわけだよね。サクサク感がなくてやだよー。
でnohupで Agentを実行してみたらどうかなと思った。
nohup script/runner "Agent.build(\"$REPOS\", $REV)"
でも、僕はたまに間違えて一回で済むコミットを何回かに分けてしまうことがあるので、そういうときにテストなどに時間がかかる場合はsvnサーバが大変なことになりそうな予感。
ちょっとCIAから離れて考えてみると、CIツールとしては、SVNにコミットした後はテストを動かしたいんだけど、全部のテストを動かしたりすると時間がかかっちゃう場合とかはコミット毎ではなくて、一定時間ごとにテストを実行して、エラーや失敗があったら報告してくれる方が現実的で嬉しいかも。