Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Upcoming SlideShare
Jenkins 再入門
Jenkins 再入門
Loading in …3
×
1 of 49

中規模プロジェクトでのJenkinsの運用を支える技術

21

Share

2012/02/10 第2回大阪Jenkins勉強会

http://atnd.org/events/23053

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

中規模プロジェクトでのJenkinsの運用を支える技術

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

×