hudsonによるoss開発 - seasar foundation...jiemamyでのhudson(4)...
TRANSCRIPT
![Page 1: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/1.jpg)
HudsonによるOSS開発
cactusman
![Page 2: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/2.jpg)
アジェンダ
• 自己紹介
• CIとは
• Hudsonとは
• 実例
![Page 3: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/3.jpg)
自己紹介
• HN:cactusman(さぼてん)
• 年齢:0x1c
• 出身:関西
• 所属:java-ja,Wicket-ja
• 肩書き:Hudsonコミッタ
![Page 4: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/4.jpg)
今日はスーツコスプレですが、よろしくお願いします
![Page 5: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/5.jpg)
今日の対象
• OSSです
– ドワンゴで働くid:t_yanoがドワンゴ社内で使ってます
• 具体的なテストなどの話は範囲外です
– これはid:t-wadaでしょJK
![Page 6: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/6.jpg)
アジェンダ
• 自己紹介
• CIとは
• Hudsonとは
• 実例
![Page 7: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/7.jpg)
CIとは?
![Page 8: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/8.jpg)
継続的インテグレーション(Continuous Integration)の略
![Page 9: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/9.jpg)
XPのベストプラ
クティスのひとつ
![Page 10: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/10.jpg)
システムのインテグレーション作業を開発の初期段階から頻繁に行う
![Page 11: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/11.jpg)
新しい概念ではない–Martin Fowlerの「Continuous Integration」(2000/09/10、最終2006/05/01)
– JavaWorldにて特集(2006/06、角谷信太郎)
![Page 12: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/12.jpg)
一言で言うと、
頻繁にビルドしろ
![Page 13: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/13.jpg)
具体的には
コンパイル
UnitTest
パッケージ
結合テスト
デプロイ
システムテスト
チェックアウト
インスペクション
![Page 14: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/14.jpg)
CIを行うメリット
• 成果物の品質の保証
–ビルドやテストが通らない、といった開発時の不具合が先送りしにくくなり、早期発見しやすくなる
–デグレートが起きにくくなる
• 手戻りコストの削減
![Page 15: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/15.jpg)
Q. メリットがあるのに、なぜ広まらないのか?
![Page 16: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/16.jpg)
A.大変だから
![Page 17: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/17.jpg)
自動でできることは自動で–コンピュータは昔に比べるとものすごく安価になっている
–一方、人の時間は貴重で高い
→機械にできる作業は全て機械に
→ツールをうまく使う
![Page 18: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/18.jpg)
CIが有効なケース
• 多人数
• 分散開発
• 複数の実行環境(OS、ミドルウェア等)
→巨大プロジェクト、OSSに向いている
![Page 19: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/19.jpg)
OSSでのCIのメリット(1)
ソースコードの状況が把握しやすい
–ビルドが通る、通らない
–テストが通る、通らない
→ユーザがビルドするときにはまりにくくなる!
![Page 20: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/20.jpg)
• OSSでユーザがビルドできない
というのは、チャンスロスしている
• OSSではどんなに優れたもの
でも改造できなければ価値が半減
![Page 21: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/21.jpg)
OSSでのCIのメリット(2)
個人では用意しにくい複数の実行環境
– OS(Windows、RHEL、Mac OS、Solaris、・・・)
– Java VM(Sun、IBM、JRockit、・・・)
– RDBMS(Oracle、DB2、SQLServer、PostgreSQL、MySQL、・・・)
![Page 22: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/22.jpg)
アジェンダ
• 自己紹介
• はじめに
• CIとは
• Hudsonとは
• 実例
![Page 23: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/23.jpg)
ところで、
![Page 24: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/24.jpg)
皆さん、
Hudsonと
聞くと
![Page 25: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/25.jpg)
こんなのとか
![Page 26: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/26.jpg)
こんなのとか
![Page 27: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/27.jpg)
こんなのを想像しますが
![Page 28: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/28.jpg)
やっぱり
Hudsonと
いえば
![Page 29: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/29.jpg)
名人でしょJK
![Page 30: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/30.jpg)
お約束で
すいません
m(_ _)m
![Page 31: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/31.jpg)
Hudsonとは?
![Page 32: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/32.jpg)
OSSのCIツール
![Page 33: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/33.jpg)
TOP画面
![Page 34: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/34.jpg)
Job画面
![Page 35: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/35.jpg)
レポートグラフ
![Page 36: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/36.jpg)
Sun Microsystemsの
川口耕介さんが
開発してます
![Page 37: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/37.jpg)
コンセプト
• 簡単、手軽、親切
– JavaWebStartで起動
– 「java -jar hudson.war」起動
–好きなサーブレットコンテナにデプロイ可能
–設定はWebの画面
– DBが不要
• プラグインで機能拡張
![Page 38: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/38.jpg)
開発に使われてるプロジェクト
• NetBeans
• Glassfish
• JBoss
• Apache
• JavaFX
• JRuby
• Seasar
• Jiemamy
![Page 39: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/39.jpg)
Hudson(CIサーバ)の役割
• チェックアウト
• ビルドスケジュール管理
• 通知
• レポーティング
• ログの保存
![Page 40: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/40.jpg)
一例
![Page 41: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/41.jpg)
Hudson
SCM
ローカル
コミット
![Page 42: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/42.jpg)
Hudson
SCM
ローカル
チェックアウト
![Page 43: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/43.jpg)
Hudson
SCM
ローカル
ビルド
![Page 44: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/44.jpg)
Hudson
SCM
ローカル
メール送信
![Page 45: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/45.jpg)
Hudson
SCM
ローカル
レポートの確認
![Page 46: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/46.jpg)
概要図
![Page 47: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/47.jpg)
Hudsonの機能
• SCM対応
• 通知機能
• 綺麗なレポーティング
• cronライクなスケジューリング
• Jobのチェーン
• master/slave方式のクラスタリング
• ファイル指紋
![Page 48: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/48.jpg)
Hudsonの対応
• SCM
– CVS
– Subversion
– VSS(Plugin)
– Mercurial(Plugin)
– git(Plugin)
– Perforce (Plugin)
![Page 49: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/49.jpg)
Hudsonの対応
• ビルドツール
– Ant
– Maven(1,2)
– sh
– bat
– Rake(Plugin)
– Gant(Plugin)
– MSBuild (Plugin)
![Page 50: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/50.jpg)
Hudsonの対応
• 通知手段
– RSS
– IRC(Plugin)
– Jabber(Plugin)
– Twitter(Plugin)
– XFD(Plugin)
![Page 51: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/51.jpg)
XFDエクストリーム・フィードバック・デバイス
![Page 52: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/52.jpg)
Hudsonの対応
• ビルドリポート
– JUnitTestReport
– FindBugs(Plugin)
– Covertura(Plugin)
– CheckStyle(Plugin)
– PMD(Plugin)
– TaskSccaner(Plugin)
![Page 53: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/53.jpg)
Hudsonの対応
• BTSとの連携
– JIRA(Plugin)
– Trac(Plugin)
– Mantis(Plugin)
– Bugzilla (Plugin)
![Page 54: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/54.jpg)
とりあえず試したい場合
• SCMがある場合
java –jar hudosn.war
• TracLightning(Windowsのみ)
– Subversion
– Trac
– Hudson
→インストールが簡単で、試すハードルが低い
*JDKのインストールは別途必要
![Page 55: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/55.jpg)
アジェンダ
• 自己紹介
• CIとは
• Hudsonについて
• 実例
![Page 56: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/56.jpg)
実例
• Jiemamy(メイン)
• Seasar
• CodeRepos
![Page 57: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/57.jpg)
Jiemamyプロジェクト
• 通称:地豆• DB設計・リファクタリングサポートツール• Sourceforge• URL:http://www.jiemamy.org/• 提供インターフェース
– Eclipse Plugin– Maven Plugin
• メンバー:20人弱– コミュニケーションは主にSkype– 共有情報はWiki
![Page 58: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/58.jpg)
コミッタ、
コントリビュータ
募集中!
![Page 59: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/59.jpg)
Jiemamyの開発環境
• サブプロジェクトが3つ
• SCM:Subversion
• ビルド:Maven 2
• IDE:Eclipse
• BTS:JIRA
• ソースコードビューア:Fisheye + Clerusible
• その他– Tugboat.GTD
– Jiemamy-Polls
![Page 60: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/60.jpg)
JiemamyでのHudson(1)
• CPU:AMD Athlon(tm) 64 Processor 3500+
• OS:CentOS 5.2
• Java:jdk 6u11
• AP:Tomcat 6
• Maven 2.0.9
![Page 61: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/61.jpg)
JiemamyでのHudson(2)
• Hudson 1.280
– Emotional plugin
– Task Scanner Plugin
– Checkstyle Plugin
– FindBugs Plugin
– disk-usage plugin
– PMD Plugin
– JIRA plugin
![Page 62: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/62.jpg)
JiemamyでのHudson(3)
• Hudosnのアップデート
→手作業
• バックアップ
→特にしていない
• ユーザ管理
– Hudsonのユーザーデータベース
→手作業で、連携なし
![Page 63: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/63.jpg)
JiemamyでのHudson(4)
• Hudsonで2時間おきにSCMをポーリング
• Job
–起点となるものからチェーン
– Jobごとに別ワークスペース
– インスペクション系は別Jobで
• Maven2のsiteゴールで実行
![Page 64: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/64.jpg)
JiemamyでのHudson(5)
• 通知はメーリングリストにポスト
• プラグインでJIRA、Fisheyeと連携
• TaskScanner Pluginでソースコードのタスクをチェック
– TODO、FIXMEなど
![Page 65: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/65.jpg)
Jobのチェーン
specs artemis vesta
specs-site artemis-site vesta-site
![Page 66: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/66.jpg)
メリット・デメリット
• メリット
–テストが充実
– ソースコードの状態を把握
– JIRAやFisheyeなどの他のツールとの連携
• デメリット
–敢えて言えば、マシンリソースが必要
![Page 67: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/67.jpg)
苦労した点
• プロジェクト途中でHudsonを導入
–そもそもビルドができない
– JUnitが真赤
• Eclipse PluginとMaven2の相性
–依存ライブラリの2重管理
• Maven2
– Hudsonで実行するとなぜか動かない
![Page 68: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/68.jpg)
今後
• 自動化できることをやっていく
• 動作しないところを調査、改修
• データ収集
• バックアップ
–そもそもする必要があるのか?
![Page 69: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/69.jpg)
SeasarでのHudson(1)
• プロジェクトは5つ
• SCM:Subversion
• ビルドツール:Maven2
• ユーザ認証にLDAPを使用
• 複数DBでのテスト
–独自Plugin使用
![Page 70: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/70.jpg)
SeasarでのHudson(2)
• 使用プラグイン– Disk Usage Plugin– JIRA Plugin– Task Scanner– Checkstyle Plugin– FindBugs Plugin– PMD Plugin– Warnings Plugin– Phing Plugin– Emotional Hudson Plugin– (Hudson Test Database Plug-in)
![Page 71: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/71.jpg)
HudsonのPluginの作り方
• PluginImplクラスで拡張ポイントを指定
• 拡張ポイントを継承
• ビューはJelly
• 詳しくは公式Wikiで
http://wiki.hudson-ci.org/display/HUDSON/Extend+Hudson
![Page 72: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/72.jpg)
SeasarでのHudson(3)
導入後
• DBテストは充実
– S2JDBCなど
• 品質が安定
• テスト導入だったのが本番導入へ
![Page 73: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/73.jpg)
CodeReposでのHudosn(1)
注意
• 私個人が勝手にやっています
– CodeReposの運営本体と関係がないです
–自分はCodeReposのコミッターですが、他のコミッターとも関係ないです。
![Page 74: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/74.jpg)
CodeReposでのHudosn(2)
• SCM:Subversion
• 家のサーバ
– VMware上
• メモリ:512M
• HDD:32G
• OS:CentOS 5.2
• AP:Tomcat 6.018
• ビルドツール:Maven2 2.0.9、Ant 1.7.1
![Page 75: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/75.jpg)
CodeReposでのHudosn(3)
• Hudson 1.291
–適宜手動でバージョンアップ
–通知方法はTwitter
• レポート系Plugin
• Trac Plugin
• Twitter Plugin
![Page 76: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/76.jpg)
Hudson Twitter Plugin
![Page 77: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/77.jpg)
CodeReposでのHudosn(4)
• ビルドできない、ということがすぐにわかる
– OSの違い
–設定ファイル
• もっと他の人も活用してほしいなぁ
![Page 78: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/78.jpg)
まとめ
• OSSでHudsonを使用するのは有効
–品質の向上
– ソースコードの状態を把握
• コミッター
• 利用者
–複数環境の利用
–自動化
![Page 79: HudsonによるOSS開発 - Seasar Foundation...JiemamyでのHudson(4) •Hudsonで2時間おきにSCMをポーリング •Job –起点となるものからチェーン –Jobごとに別ワークスペース](https://reader036.vdocuments.site/reader036/viewer/2022081613/5fbc85f29fdf6918cc3f99a0/html5/thumbnails/79.jpg)
ご静聴ありがとうございました