HudsonというJavaでつくられたCI(継続的インテグレーション)ツールを使って、symfonyの自動テストを継続的インテグレーションされる環境をつくる方法です。
継続的インテグレーションや自動テスト環境とは?
XPやアジャイル開発手法でのプラクティスです。とても開発者を幸せにしてくれるものです。
- プログラマーがユニットテストなどの自動テストを書く
- 実際の機能となるコードを書く
- 自分が変更した範囲のテストコードが通ることを確認する
- バージョン管理システムにコミットする
- HudsonなどのCIツールなどによって、すべての自動テストが走る。(結合テストとも呼ばれる)
- テスト結果にエラーがある場合、メールなどで通知される
こうすることによって、開発者は常にテストが通るソースコードを維持し続けることができます。
万が一、他の機能を壊すコードを書いてしまったりバグを埋め込んでしまえば、いつのコミットでどのテストが落ちたのかがすぐにわかります。
テストによるフィードバックを早くすることで、開発者はすぐに問題のあるコードの部分を特定して修正することが容易になるでしょう。
複数人数でソースコードに手を加える時に、より効果を発揮します。誰のコミットでどの部分がいつ壊れたのかを明確にしてくれます。
Hudsonのインストール方法
$ wget http://hudson-ci.org/latest/hudson.war
$ java -jar hudson.war
詳細なオプションについてはこちらをごらんください。
[Winstone 2010/06/06 22:13:21] - HTTP Listener started: port=8080
こんなのが表示され、http://localhost:8080/ へブラウザでアクセスすればOK
「新しいジョブ」をクリックして、ジョブを追加する。
svnからソースを取ってくる場合は、フリースタイル・プロジェクトのビルド。
一通り、指定されているように入力していけば問題ない。
「ビルド」をsymfonyのテスト方法にそって、書いてあげる必要があります。以下をそれぞれの環境に応じて直してください。
$WORKSPACE/trunk/symfony configure:database --env=test --name=propel --class=sfPropelDatabase "mysql:host=localhost; dbname=db_test" mylogin "mysqlpassword"
$WORKSPACE/trunk/symfony test:all --xml=log/build_$BUILD_NUMBER.xml
この2点を設定すればOKです。その他の項目は好みに応じて利用してみてください。
後は指定された時間やトリガーによって、ビルドがおこなわれます。個人的にはバージョン管理システムをプーリングすることをおすすめします。
参考書席
ポール・M・デュバル¥ 3,360
|