29
Hudson ときどきMaven2 cactusman

HudsonときどきMaven2

Embed Size (px)

Citation preview

Page 1: HudsonときどきMaven2

HudsonときどきMaven2

cactusman

Page 2: HudsonときどきMaven2

目的

Hudson+Maven2を使って楽々CIの実現

目指せ!定時退社?!

Page 3: HudsonときどきMaven2

アジェンダ

● 自己紹介

● CIについて● Hudsonについて● Maven2との連携について● デモ● 補足● まとめ

Page 4: HudsonときどきMaven2

アジェンダ

● 自己紹介

● CIについて● Hudsonについて● Maven2との連携について● デモ● 補足● まとめ

Page 5: HudsonときどきMaven2

自己紹介

● HN:cactusman● 年齢:0x1b● 住所:関西● 会社:ベンチャー● 職業:プログラマ

Page 6: HudsonときどきMaven2

アジェンダ

● 自己紹介

● CIについて● Hudsonについて● Maven2との連携について● デモ● 補足● まとめ

Page 7: HudsonときどきMaven2

CIとは?

● Continuous Integration(継続的インテグレーション)

● XPのベストプラクティスのひとつ。● ナイトリービルド、デイリービルドの発展形

Page 8: HudsonときどきMaven2

定義

● 従来は開発期間の中盤あるいは後半以降で行われていたシステムのインテグレーション作業を、開発の初期段階から頻繁に行うプラクティスである。– まっさらな状態から最新のソースコードをチェックアウトする。

– ビルドする。

– テストする。

– 上記のことが人の手を借りずに全て自動で、ビルドエラーやテストの失敗がなければ「成功したビルド」とする。

Page 9: HudsonときどきMaven2

必要最低限な機能

● SCMからチェックアウト、クリーンアップ● スケジュール管理● ビルド、テスト成否判定● ユーザへの通知手段

Page 10: HudsonときどきMaven2

なぜ必要か?

● 成果物の品質が保障がされる。– ビルドが通らない、テストが通らないということが先送りされず、発見されやすい。

– デグレートが起きにくくなる。

● 手戻りコストの削減される。

Page 11: HudsonときどきMaven2

有効なケース

● 多人数● 分散開発

● 複数の実行環境(OSやミドルウェア等)

Page 12: HudsonときどきMaven2

ツール

● Hudson● CruiseControl● Apache Continuun● Apache Gump● Anthill OS● Luntbuild● ・・・

Page 13: HudsonときどきMaven2

アジェンダ

● 自己紹介

● CIについて● Hudsonについて● Maven2との連携について● デモ● 補足● まとめ

Page 14: HudsonときどきMaven2

Hudson

● 作者はSunの川口耕介さん(JAXBなど)● 特徴は設定が簡単で、敷居が低い

– ウェブの画面で設定できる。

– 好きなサーブレットコンテナにデプロイして使える。

– 単体でも動く。● java -jar hudson.war

– DB不要● ビルド情報はファイルに書き出す。

● プラグイン拡張● 分散ビルド

Page 15: HudsonときどきMaven2

対応

● ビルドツール

– Ant

– Maven1、2

– シェル

● SCM

– CVS

– Subversion● 通知手段

– E-mail

– RSS

– IM

Page 16: HudsonときどきMaven2

アジェンダ

● 自己紹介

● CIについて● Hudsonについて● Maven2との連携について● デモ● 補足● まとめ

Page 17: HudsonときどきMaven2

Maven2を使う利点(1)

● 開発者にとって使い勝手がいい

– 開発、ビルド環境をそろえるコストがantに比べ低い

● 開発マシンごとの違い● ライブラリのバージョン

– 最初の一歩の敷居が低い● 雛形から開発

Page 18: HudsonときどきMaven2

Maven2を使う利点(2)

● CIと相性がいい– 開発マシンとの整合性がとりやすい。

– 開発初期からイテレーションできる。

– 単体テストがMaven2側に組み込まれている。– ビルドマシンが壊れて置き換える場合やビルドマシンを追加しても、素早く簡単に構築できる。

Page 19: HudsonときどきMaven2

Hudson+Maven2

● HudsonはMaven2に対応(ベータ)。● マルチプロジェクトに対応。

● Hudson用にPOMをいじる必要がない。● Hudsonの立場では、Maven2はいちビルドツール。– 他のビルドツールもまぜて使える。

Page 20: HudsonときどきMaven2

アジェンダ

● 自己紹介

● CIについて● Hudsonについて● Maven2との連携について● デモ● 補足● まとめ

Page 21: 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

Page 22: HudsonときどきMaven2

デモ概要図

クライアント CIサーバ

SCMサーバ

チェックアウト ダウンロード

設定、ビルド

結果

Page 23: HudsonときどきMaven2

デモ

Page 24: HudsonときどきMaven2

アジェンダ

● 自己紹介

● CIについて● Hudsonについて● Maven2との連携について● デモ● 補足● まとめ

Page 25: HudsonときどきMaven2

Hudson+Maven2の補足(1)

● 結合テストやシステムテストは別途必要。

● Maven2はビルドツール、HudsonはCIツール。  役割分担が重要。

Page 26: HudsonときどきMaven2

Hudson+Maven2の補足(2)

● Hudsonで複数ジョブをチェーンさせるには一工夫いる。

– Hudsonはジョブごとにworkspaceを作るため、ジョブ間を跨いでworkspaceを利用できない。

● ジョブごとにリポジトリ内のフォルダをわけて運用● ジョブの成果物はwgetやAntのgetタスクで取得

Page 27: HudsonときどきMaven2

アジェンダ

● 自己紹介

● CIについて● Hudsonについて● Maven2との連携について● デモ● 補足● まとめ

Page 28: HudsonときどきMaven2

まとめ

●プロジェクト初期からCIを導入して手戻りコストを減らそう。

●CIに適しているのがHudson+Maven2。●CI導入の結果、時間を有効利用。

●勉強、社内環境整備、別プロジェクトの手助け・・・

●定時に帰れるかも?

Page 29: HudsonときどきMaven2

ご清聴ありがとうございました。