Upload
cactusman
View
6.278
Download
0
Embed Size (px)
Citation preview
HudsonときどきMaven2
cactusman
目的
Hudson+Maven2を使って楽々CIの実現
目指せ!定時退社?!
アジェンダ
● 自己紹介
● CIについて● Hudsonについて● Maven2との連携について● デモ● 補足● まとめ
アジェンダ
● 自己紹介
● CIについて● Hudsonについて● Maven2との連携について● デモ● 補足● まとめ
自己紹介
● HN:cactusman● 年齢:0x1b● 住所:関西● 会社:ベンチャー● 職業:プログラマ
アジェンダ
● 自己紹介
● CIについて● Hudsonについて● Maven2との連携について● デモ● 補足● まとめ
CIとは?
● Continuous Integration(継続的インテグレーション)
● XPのベストプラクティスのひとつ。● ナイトリービルド、デイリービルドの発展形
定義
● 従来は開発期間の中盤あるいは後半以降で行われていたシステムのインテグレーション作業を、開発の初期段階から頻繁に行うプラクティスである。– まっさらな状態から最新のソースコードをチェックアウトする。
– ビルドする。
– テストする。
– 上記のことが人の手を借りずに全て自動で、ビルドエラーやテストの失敗がなければ「成功したビルド」とする。
必要最低限な機能
● SCMからチェックアウト、クリーンアップ● スケジュール管理● ビルド、テスト成否判定● ユーザへの通知手段
なぜ必要か?
● 成果物の品質が保障がされる。– ビルドが通らない、テストが通らないということが先送りされず、発見されやすい。
– デグレートが起きにくくなる。
● 手戻りコストの削減される。
有効なケース
● 多人数● 分散開発
● 複数の実行環境(OSやミドルウェア等)
ツール
● Hudson● CruiseControl● Apache Continuun● Apache Gump● Anthill OS● Luntbuild● ・・・
アジェンダ
● 自己紹介
● CIについて● Hudsonについて● Maven2との連携について● デモ● 補足● まとめ
Hudson
● 作者はSunの川口耕介さん(JAXBなど)● 特徴は設定が簡単で、敷居が低い
– ウェブの画面で設定できる。
– 好きなサーブレットコンテナにデプロイして使える。
– 単体でも動く。● java -jar hudson.war
– DB不要● ビルド情報はファイルに書き出す。
● プラグイン拡張● 分散ビルド
対応
● ビルドツール
– Ant
– Maven1、2
– シェル
● SCM
– CVS
– Subversion● 通知手段
– RSS
– IM
アジェンダ
● 自己紹介
● CIについて● Hudsonについて● Maven2との連携について● デモ● 補足● まとめ
Maven2を使う利点(1)
● 開発者にとって使い勝手がいい
– 開発、ビルド環境をそろえるコストがantに比べ低い
● 開発マシンごとの違い● ライブラリのバージョン
– 最初の一歩の敷居が低い● 雛形から開発
Maven2を使う利点(2)
● CIと相性がいい– 開発マシンとの整合性がとりやすい。
– 開発初期からイテレーションできる。
– 単体テストがMaven2側に組み込まれている。– ビルドマシンが壊れて置き換える場合やビルドマシンを追加しても、素早く簡単に構築できる。
Hudson+Maven2
● HudsonはMaven2に対応(ベータ)。● マルチプロジェクトに対応。
● Hudson用にPOMをいじる必要がない。● Hudsonの立場では、Maven2はいちビルドツール。– 他のビルドツールもまぜて使える。
アジェンダ
● 自己紹介
● CIについて● Hudsonについて● Maven2との連携について● デモ● 補足● まとめ
デモ環境
● CIサーバ– OS:CentOS 5.0
– Java:JDK6 u3
– リバースプロキシ:Apache 2.2.3
– サーブレットコンテナ:Tomcat 6.0.14
– CIツール:Hudson 1.159
– ビルドツール:Maven2 2.0.7
デモ概要図
クライアント CIサーバ
SCMサーバ
チェックアウト ダウンロード
設定、ビルド
結果
デモ
アジェンダ
● 自己紹介
● CIについて● Hudsonについて● Maven2との連携について● デモ● 補足● まとめ
Hudson+Maven2の補足(1)
● 結合テストやシステムテストは別途必要。
● Maven2はビルドツール、HudsonはCIツール。 役割分担が重要。
Hudson+Maven2の補足(2)
● Hudsonで複数ジョブをチェーンさせるには一工夫いる。
– Hudsonはジョブごとにworkspaceを作るため、ジョブ間を跨いでworkspaceを利用できない。
● ジョブごとにリポジトリ内のフォルダをわけて運用● ジョブの成果物はwgetやAntのgetタスクで取得
アジェンダ
● 自己紹介
● CIについて● Hudsonについて● Maven2との連携について● デモ● 補足● まとめ
まとめ
●プロジェクト初期からCIを導入して手戻りコストを減らそう。
●CIに適しているのがHudson+Maven2。●CI導入の結果、時間を有効利用。
●勉強、社内環境整備、別プロジェクトの手助け・・・
●定時に帰れるかも?
ご清聴ありがとうございました。