27
Jenkins にににににに cactusman

Jenkins

Embed Size (px)

Citation preview

Page 1: Jenkins

Jenkins について何か

cactusman

Page 2: Jenkins

自己紹介• HN : cactusman (さぼてん) • 年齢: 0x1d • 出身:関西 • 所属: java-ja,Wicket-ja • 肩書き: Jenkins コミッタ

Page 3: Jenkins

注意• O 社とのごたごたは聞かないでください– gihyo.jp にわかりやすい記事があります

• Buildbot については聞かないでください– エキスパート Python の作者に聞いてください

• 名人については聞かないでください– もう Jenkins です

• Python の話は?– 聞かないでください

Page 4: Jenkins

Jenkins のクラスタリングのすすめ

cactusman

Page 5: Jenkins

アジェンダ• CI とは?• Jenkins について軽く• スローテスト問題• Jenkins のクラスタリングについて• まとめ

Page 6: Jenkins

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

Integration )の略• XP のベストプラクティスのひとつ• システムのインテグレーション作業 を開

発の初期段階から頻繁に行う

Page 7: Jenkins

具体的には

コンパイル

UnitTest

パッケージ

結合テスト

デプロイ

システムテスト

チェックアウト

インスペクション

Page 8: Jenkins

概要図

Page 9: Jenkins

CI を行うメリット

• 成果物の品質の保証–ビルドやテストが通らない、といった

開発時の不具合が先送りしにくくなり、早期発見しやすくなる–デグレートが起きにくくなる

• 手戻りコストの削減

Page 10: Jenkins

個人的に考える CI のメリット• 関心ごとの分離– 一度に複数のことを対処するのはよくない– 全てを予測するのは現実的ではない– 人間が行わなければいけない仕事に注力できる

• テスト資産– テストを書くようになる– テスト戦略について考えるようになる

• リソースの有効活用• 複数の環境

Page 11: Jenkins

とはいうものの• 何から始めていいかわからない• 労力(コスト)の割には得られるメリッ

トがすくないんじゃないの?

Page 12: Jenkins

そこで Jenkins です!

Page 13: Jenkins

Jenkins とは• OSS の CI ツール– メインの開発者は川口耕介さん

• 簡単、手軽、親切– JavaWebStart で起動– 「 java -jar jenkins.war 」起動– 好きなサーブレットコンテナにデプロイ可能– 設定は Web の画面– DB が不要

• プラグインで機能拡張

Page 14: Jenkins

デモ

Page 15: Jenkins

割と簡単なため導入ができたとします。

(できないことも多いですが・・・)

Page 16: Jenkins

よくある話• みんなテストをがしがし書いていきます。

Page 17: Jenkins

よくある話• みんなテストをがしがし書いていきます。• ローカルでの実行でも時間がかかるよう

になります。

Page 18: Jenkins

よくある話• みんなテストをがしがし書いていきます。• ローカルでの実行でも時間がかかるよう

になります。• 気が付いたら、全テスト通すのに日単位

になってることがあります。

Page 19: Jenkins

よくある話• みんなテストをがしがし書いていきます。• ローカルでの実行でも時間がかかるよう

になります。• 気が付いたら、全テスト通すのに日単位

になってることがあります。→ スローテスト問題

Page 20: Jenkins

スローテスト問題• テスト実行に時間がかかりすぎる– テスト実行数の増加によるところ– 非効率なテスト– 依存関係• 依存している全モジュールをテスト

– システムテスト的なもの• Selenium とか

• みんないきつくところ• ビルド自体も同様

Page 21: Jenkins

解消方法• テスト自体のパフォーマンスチューニング– TDD 的なテストは捨てる– DB などはモック化

• Job のスケジューリング– 早く終わるもの、価値の高いものを優先

• Job を細分化– 並列性を上げる

• スケールアップ• スケールアウト(クラスタリング)

Page 22: Jenkins

やっとクラスタリングに到達

Page 23: Jenkins

Jenkins のクラスタリングについて• マスタ / スレーブ方式– マスタは命令を出す– スレーブを命令どおりに仕事する– マスタはスレーブの結果を集める

• スレーブの設定は ssh がおすすめ– スレーブ側の ssh の設定ができていればスレーブ

エージェントを自動で送り込める• スレーブにラベルを付けれる– Windos のみや Linux のみ、実行環境のバージョン

や DB ごとなどをグループ化

Page 24: Jenkins

デモ• Windows• JNLP経由でのスレーブ起動

Page 25: Jenkins

クラスタリング構成の有用性• マシンは人間に比べて安い– こき使いましょう–使いこなすのもスキル

• Job 単位で並列で実行可能– Job の作り方次第

• できる幅が広がる– あるスレーブでは性能テストのみなど

Page 26: Jenkins

まとめ• Jenkins は導入が簡単• Jenkins のクラスタリングは簡単• スローテストには是非クラスタリング構

成を

Page 27: Jenkins

情報• 公式Wiki に日本語情報があります–今回のクラスタリングについても情報が豊富です

• Twitter でつぶやく– 意外とコミッターときゃっきゃうふふできます– togetter にまとめがいくつかあります

• ブログに読む / 書く– エラーなどはじゃんじゃん書いてください– もれなくコミッターから突っ込みが入ります