DevSumi2009 Hudson によるインクリメンタルな開発
CI(継続的インテグレーション)とは
- システムのインテグレーション作業を開発の初期段階から行う事
- 2000年にマーチン・ファウラーが論文を書いてるのでそんなに新しい訳じゃない
CIのメリット
- 品質向上…ビルドやテストが通らないと言った不具合が先送りされにくい
- デグレしにくい
CIはなぜ普及しないか
- 大変だから
CIが有効なケース
- 多人数
- 分散開発
- コミュニケーションコストをCIツール側で低減するとかそういう事か?
- 複数の実行環境
- >巨大プロジェクト・OSS向き
Hudsonがやってくれる事
- チェックアウト
- ビルドのスケジュール管理
- cronライクなスケジューリング
- Jobのチェーン
- 通知
- レポーティング(グラフにしたりとか)
- ログの保存
Mercurial等のメインストリームではないSCMもpluginで対応、
各種buildツール、ソースコード静的チェックツール等、BTS等にも対応。
Hudsonを使った感覚とか
- Maven2を使うとものすごく楽
- 関心事との分離
- 機械にやれる事は機械にやらせる
注意点
- 犯人探しをしない
- 導入だけで満足しない
- エラーを放置しない