Submit Search
中規模プロジェクトでのJenkinsの運用を支える技術
•
20 likes
•
8,839 views
ikikko
Follow
2012/02/10 第2回大阪Jenkins勉強会 http://atnd.org/events/23053
Read less
Read more
1 of 49
More Related Content
中規模プロジェクトでのJenkinsの運用を支える技術
1.
中規模プロジェクトでの Jenkinsの運用
を支える技術 第2回大阪Jenkins勉強会 2012/02/10 @ TIS株式会社 1
2.
自己紹介 •@ikikko / id:ikikko •
所属 •株式会社 ヌーラボ •日本Jenkinsユーザ会 2
3.
会社紹介 •自社サービス/プロダクト •受託開発
3
4.
会社紹介 4
5.
アジェンダ • 背景と問題点 • 対策:多数のプロジェクトの管理 •
依存ライブラリの管理 • プロジェクトの一括変更 • プロジェクトのお手軽コピー • まとめ http://www.flickr.com/photos/darrentunnicliff/3371355414/
6.
プロジェクト概要(初期) • フェーズ:共通に利用するフ レームワークの開発 •人数:10名前後/月 • プロジェクト数:20前後
EclipseやJenkinsなどのプロジェクト 6
7.
プロジェクト概要(現在) •フェーズ:業務ロジックを含 んだアプリケーションの開発 •人数:150名前後/月 • プロジェクト数は・・・
7
8.
8
9.
問題点 • 20前後なら、頑張れば1つ1 つベタに管理できる •100超えると無理ゲー
9
10.
アジェンダ • 背景と問題点 • 対策:多数のプロジェクトの管理 •
依存ライブラリの管理 • プロジェクトの一括変更 • プロジェクトのお手軽コピー • まとめ http://www.flickr.com/photos/darrentunnicliff/3371355414/
11.
依存ライブラリの管理 • 依存しているライブラリを設 定ファイルに記述 • 自動的にライブラリを取得 •ライブラリが依存しているライ
ブラリも推移的に取得 11
12.
概要図 12
13.
概要図 13
14.
導入の背景 • ライブラリの依存管理を自分 でやりたくない •特にライブラリのバージョンが
変わったときの管理が煩雑 14
15.
ライブラリ管理機能がないと •ライブラリを使用する全プロ ジェクトに手動でコピーする 必要がある •バージョンが変わる度に手動
で入れ替えなければならない 15
16.
メリットが大きいケース • ライブラリ(プロジェクト) の数が多い • ライブラリのバージョンが頻
外部ライブラリの管理より、内部の 繁に変わる ライブラリを細かくバージョン切って その管理に使用する方がより効果的 16
17.
Jenkins連携 http://www.flickr.com/photos/sunfrog1/900958237/
17
18.
Jenkinsとの連携 • プロジェクト の上流下流の 設定 •
バージョンも考 慮して自動設定 18
19.
Jenkinsとの連携 • プロジェクト 間の成果物の 転送 •Jenkins側で特
別な設定が不要 19
20.
関連ツール http://www.flickr.com/photos/kwl/5127099146/
20
21.
ライブラリ管理ツール 名称
特徴 Maven 標準のビルドライフサイクルが定義されている Ivy Antベース Gradle Groovyで記述できる SBT Scalaで記述できる 21
22.
リポジトリ管理ツール
名称 特徴 Webサーバ+ Apacheのmod_dav など WebDAVモジュール 手軽に用意できる Artifactory / Nexus など リモートリポジトリのキャッシュと 専用ツール いった、便利な機能が付随 参考 : http://d.hatena.ne.jp/ikikko/20111202/1322831201 22
23.
アジェンダ • 背景と問題点 • 対策:多数のプロジェクトの管理 •
依存ライブラリの管理 • プロジェクトの一括変更 • プロジェクトのお手軽コピー • まとめ http://www.flickr.com/photos/darrentunnicliff/3371355414/
24.
プロジェクトの一括変更 •
全プロジェクトを横断的に変更したい • 例:エラー時のメール通知宛先に追加す る場合 など •プロジェクトを1つずつ変更するのは 大変 24
25.
スクリプトコンソール // 全プロジェクトをループ処理 jenkins.model.Jenkins.instance.items.each {
println "Job : ${it.name}" // 各プロジェクトにメール通知の宛先を追加 def mailer = it.publishersList.get(hudson.tasks.Mailer.class) mailer?.recipients += '
[email protected]
' } スクリプトを書いていると Jenkinsの内部実装に詳しくなれます 参考 : http://d.hatena.ne.jp/ikikko/20111202/1322831201 25
26.
http://www.flickr.com/photos/ol1/5539623423/ 26
27.
Configuration Slicing
Plugin • 標準的な項目を、GUI上で一括 編集できる •古いビルドの破棄 •E-mail通知 宛先 • ビルド無効化 etc... 27
28.
Scriptler Plugin •スクリプトの保存・再利用 • 用意されている外部のスクリ プトを利用可能 •スクリプト実行権限の管理
28
29.
アジェンダ • 背景と問題点 • 対策:多数のプロジェクトの管理 •
依存ライブラリの管理 • プロジェクトの一括変更 • プロジェクトのお手軽コピー • まとめ http://www.flickr.com/photos/darrentunnicliff/3371355414/
30.
プロジェクトのコピー • Jenkins本体の機能にプロジェクト のコピー機能はある •
コピー後に画面上から修正が必要 **/* のように記述できる • リポジトリのパス 項目は問題ない • プロジェクト名を含んだ設定項目 (Javadocの出力先など) 30
31.
プロジェクトの自前コピー 1. テンプレートのプロ ジェクトから設定ファ
イルをコピー・取得 2. ファイル中のプロジェ クト依存箇所を修正 3. 修正した設定ファイル を基に、プロジェクト を新規作成 31
32.
Remote Access API •
プログラムから操作可能なAPI • プロジェクトの作成 • http://localhost/jenkins/createItem • プロジェクトの設定取得 • http://localhost/jenkins/job/{name}/ config.xml 32
33.
http://www.flickr.com/photos/ol1/5539623423/ 33
34.
Cloudbees Template
Plugin • テンプレートを予め作成してお き、そのテンプレートを後から 利用できる •job / builder / folder / auxiliary 34
35.
アジェンダ • 背景と問題点 • 対策:多数のプロジェクトの管理 •
依存ライブラリの管理 • プロジェクトの一括変更 • プロジェクトのお手軽コピー • まとめ http://www.flickr.com/photos/darrentunnicliff/3371355414/
36.
まとめ • 100近くあるJenkinsプロ ジェクトの管理コストを、あ の手この手で減らしています
36
37.
今日話さなかったこと • スロービルド対策 • マシンのスケールアップ・アウト(スレーブ化) •
ビルド実行時間の計測・グラフ化 • 1クリックリリース • リリーススクリプトの作成 • 環境ごとに設定を切り替える仕組み(プロファイル) 37
38.
Jenkinsの拡張
38
39.
今回手を入れたところ •スクリプトコンソール • ショートカットキーの割り当て •Ivyプラグイン • 特定の場合にビルドさせないように •etc...
39
40.
プルリクエスト/バグ報告/翻訳 •お待ちしております(日本語 でもOK) • さんが対応してくれるで しょう
40
41.
最後に http://www.flickr.com/photos/chrisjohnbeckett/3146818373/
41
42.
デスマーチに疲れる日も
ありますよね 42
43.
エ ン ジ ニ ア
43
44.
開
発 44
45.
それでも 僕は信じています
45
46.
46
47.
エ ン ジ ニ ア
47
48.
Jenkinsによって 楽しいエンジニアライフ が送れることを
48
49.
ご清聴 ありがとうございました
49