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

11,683 views

Published on

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

http://atnd.org/events/23053

Published in: Technology, Business, Design

中規模プロジェクトでの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

×