DevSumi2009 Hudson によるインクリメンタルな開発

CI(継続的インテグレーション)とは

  • システムのインテグレーション作業を開発の初期段階から行う事
  • 2000年にマーチン・ファウラーが論文を書いてるのでそんなに新しい訳じゃない

CIのメリット

  • 品質向上…ビルドやテストが通らないと言った不具合が先送りされにくい
  • デグレしにくい

CIはなぜ普及しないか

  • 大変だから

CIが有効なケース

  • 多人数
  • 分散開発
    • コミュニケーションコストをCIツール側で低減するとかそういう事か?
  • 複数の実行環境
  • >巨大プロジェクト・OSS向き

Hudsonがやってくれる事

  • チェックアウト
  • ビルドのスケジュール管理
    • cronライクなスケジューリング
    • Jobのチェーン
  • 通知
  • レポーティング(グラフにしたりとか)
  • ログの保存

Mercurial等のメインストリームではないSCMもpluginで対応、
各種buildツール、ソースコード静的チェックツール等、BTS等にも対応。

Hudsonを使った感覚とか

  • Maven2を使うとものすごく楽
  • 関心事との分離
  • 機械にやれる事は機械にやらせる

注意点

  • 犯人探しをしない
  • 導入だけで満足しない
  • エラーを放置しない

質疑応答

  • LLでの活用事例はあるか?
    • それなりにある
  • やっぱり一番恩恵が受けられるのはJava開発なのか?
    • Yes.Javaの場合は複数バージョンのJREに対応しないといけないとかあるが、そういうときにHudsonが活躍する。
    • LLの場合は開発〜実運用まで環境を固定する場合が多いので↑のような活躍の場があまりない