Your SlideShare is downloading. ×
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
自ら肥え太る執事を現場に入れてみた
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

自ら肥え太る執事を現場に入れてみた

3,166

Published on

Jenkins勉強会大阪 第4回 (2012/12/21) にて発表した資料です。 …

Jenkins勉強会大阪 第4回 (2012/12/21) にて発表した資料です。
まとめサイト : https://wiki.jenkins-ci.org/pages/viewpage.action?pageId=65669255

Published in: Technology
0 Comments
8 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,166
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
17
Comments
0
Likes
8
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Jenkins勉強会大阪 第4回 自ら肥え太る執事を 現場に入れてみた
  • 2. Agenda ● 自己紹介 ● 本日の目的 ● そのまえに… – 背景となるプロジェクトの説明 – 3つの問題・お困りごと ● 「全回帰テスト実行環境」をつくろう ● 「JenkinsとSCMとを連携させる道具」を作る – SCM to CI synchronizer ● デモします ● やってみて… – やってみてわかったこと – 困っていること – 今後やるorやりたいな – 伝えたいこと
  • 3. 自己紹介 三浦 一仁(ミウラ カズヒト) ● @kazuhito_m ● 35歳児、独身 ● 慢性中二病患者 ● 「おもろい&便利」至上主義者 ● 自動化厨 ● 得意技:手段の目的化 ● 弱点:手段の目的化 ● 苦手:英語と算数 ● ハーモニカが好き ● 株式会社ヨドック 所属 ● 興味あるもの – 無入力ライフログ – 組込以上,PC未満ガジェット ● 例:ラズパイ等 – 「自動的に~」な便利な仕組 – 歌(PG)って踊(インフラ)れる エンジニア – “軸”はLinuxとRuby (最近サボリぎみ)
  • 4. 本日の目的 ● 「こんなことしました!」のご紹介 ● 「明日から使えるモノ」の共有 それにプラスして… 自身も「定石」を知らないので、 皆様教えて!&アイディア下さい!
  • 5. Jenkins勉強会大阪 第4回 自ら肥え太る執事を 現場に入れてみた その前に…
  • 6. Jenkins勉強会大阪 第4回 背景となる プロジェクトの説明
  • 7. 背景となるプロジェクト-あらまし ● 基幹システム(COBOL)のリプレース ● 言語はJava、データはRDBMS(某社製) ● このプロジェクト用の独自FW – 5~6年前のJava界トレンドが… ● Maven2,Struts,Spring,ORM(自作 ● ソース管理はSubversion (以下、略称SVN) ● Web画面とバッチ処理 – 1機能:1Javaプロジェクト ● Web画面 – war ● バッチ1ジョブ – jar
  • 8. 特徴 ● システムの構成 システム サブシステム 分類 業務機能 × 3 × 約25 × 約120 サブシステム ごとに JavaPrjが 約1000ずつ およそ3,000のJavaプロジェクト(jar/war) ※現在も日々増殖中 =Javaプロジェクト
  • 9. 特徴 ● Javaプロジェクトの論理的種類 業務機能 機能モジュール バッチジョブ(jar) ・バッチ1ジョブ or Webアプリ(war) ・2~3ページのWebアプリ 機能共通モジュール(jar) ・機能モジュール間のビジネスロジック共有 汎用共通モジュール(jar) ・「DB参照アリ」のUtilみたいなもの 例:日付取得等「業務色の薄い」ロジック 利用 利用 利用
  • 10. 構成管理/実装単位 「業務機能」命名則の統一: [サブシステム名]-[分類名]-[機能番号] pom.xmlのArtifactIdpom.xmlのArtifactId Javaプロジェクト名 (IDE内での認識) ● SVNの利用形態 – リポジトリTopに,trunk,branches,tagが並び、 その下にJavaプロジェクトのディレクトリが並ぶ形
  • 11. 独自文化 ● 「データファースト」のアプローチ ● 単体テストの基準 – 確認対象はDBテーブル、確認基準は「DB変化の有無」 ● 独自テストFW – テスト仕様書からテストコード – テストデータはExcel ● 対象はRDBMS ● 1ケース:1ファイル、初回実行時テンプレ作成 ● 複数テーブル1シート ● 投入、確認(diff)用の2シート ● 所定の場所に置くと、投入し実行し確認する – Seasar2のS2Unitと類似 ※この頁のすべての画像はイメージです。実際のものとは異なります。
  • 12. 独自文化- プログラマーさんのお仕事 Lan内独自 リポジトリ 基本仕様書 ※個々端末に ExpressEditon IDEテスト用 ローカルDB DDL DTO.jar 準備:ローカルにDBのガワ作る ※DDLとO/Rマッパ用クラスは プログラムとは別にニコイチで 独自管理・リリースされている。 ①基本仕様書を元に プログラミングする 単体テスト 仕様書 ②基本設計書を元に 単体テスト仕様書を作る テストクラス ソース Java プログラム テストデータ テンプレート ③単体T仕様書から テストクラスとデータ テンプレートを生成する ④テストデータ作り テスト実施、レビューを受ける Jar/war モジュール ⑤ビルドしMavenサーバに アップロードする ● Javaプロジェクト一つ作るには プログラマーさん
  • 13. Jenkins勉強会大阪 第4回 3つの 問題・お困りごと
  • 14. 問題 - お困りその1 ● 「テスト回りました!完了!」 …のはずなのに環境依存が酷い – テスト用DB作成も、 「ビルド→Mavenリリース」するのも、 すべて「開発PC」
  • 15. 問題 - お困りその2 ● 「自動テストを毎日回す仕組み」 が無かった – 「ある変化」による「翌日大量死」 などを一切検出できず
  • 16. 問題 - お困りその2…に抗った死屍累々 ● チームの努力で… – 「全回帰テスト実行環境」を作っていた – 日々「回す」「記録をとる」仕組みを作った ● 初代–Win(DOS)バッチ & タスクスケジューラ – 細かな制御が出来ず取り回し悪し ● 二代目–Linuxシェル& Javaプログラム & cron – 細かく制御できたがパーツが多い – 履歴取り・可視化が人系で… ● それすら… – 一年後、行われなくなっていた
  • 17. 私見-「自動テストを作成・実行する意味」 ● 大きく三つ 1.テストの過程・手段の明確化 2.テストの再現性 3.「日々変化」での不具合検出 ● 前提は「日々回す」 – 回す(再利用)しないと価値がダダ下がり! ● 自分が「回帰テスト」を知ったきっかけ – 「ナイトリービルド」の記事 ● 「90年代シリコンバレーの常識」と聞いたが… ● 「ナイトリービルド」が常態であるべし ● 壊したら次の日怒られる
  • 18. 問題 - お困りその3 ● リプレイスだが 「新規機能」が日々増える! – 開発期間中に増えていく! – 保守フェーズでも増える! – …だのに追随できない
  • 19. ここが今回の「発表の起点」 「日々増える」に 追随できない…
  • 20. 重要なので二回言いまし(ry 「日々増える」に 追随できない…
  • 21. 逃げ…ダメ…
  • 22. 問題 なんとかしたい…
  • 23. Jenkins勉強会大阪 第4回 と、ここまでが前フリで…
  • 24. Jenkins勉強会大阪 第4回 自ら肥え太る執事を 現場に入れてみた やっと本題!
  • 25. 急にボールが来たので… 「全回帰テスト実行環境」 を作ろう 三代目ッ!
  • 26. こんなんならいいなぁ… ● 自分からプロジェクトの空気を読んでくれる – 勝手に「増えたプログラム」を認識する – 何も言わなくてもテスト回しといてくれる テスト、 回しておきました。 ソースが追加 されているな…
  • 27. こんなんならいいなぁ… ● こちらから言わなくても「教えて」くれる – プッシュ型 – 無論「こちらから聞いて」も教えてくれる あの件 どうなりました ええ、 ばっちりうまく いきました! ソースが増えて いたので、テスト 回しておきました。
  • 28. さらに言うなら 出来るだけ ”在りモン”でできたら うれしいな…
  • 29. >突然の…< 私をお呼び ですかな…
  • 30. >突然のJenkinsさん!< 私をお呼び ですかな…
  • 31. 余談- Jenkins師匠のここがステキ! ● Jenkinsって何ぞ? – 「何か」を「登録」すれば「蹴ってくれる」仕組み ● そんなのいっぱいあるじゃんw ● 自分に「ドンピシャ」な理由 – 暗黒世界を「絵ヅラ」で見れる、見せられる ● 出来ることは「コンソール」同様、また設定要 ● 「実行状態を観察出来る」「誰でも見られる」の 威力 – キックタイミング(実行/駆動きっかけ)が豊富 – Java/Mavenがデフォルト →最大限に利用しよう!
  • 32. で、考えてみた DBサーバ と、言うのが「毎日勝手に回る」といいな! Lan内独自 リポジトリ テスト スキーマ ①①ソースの追加を監視ソースの追加を監視 自身自身JobJobに反映するに反映する ②②最新の最新のDDLDDLを取得を取得 テストスキーマ構築テストスキーマ構築 ③③最新プログラム最新プログラム ソースを取得ソースを取得 ④④プログラムソースをプログラムソースを 「テスト用」に最適化「テスト用」に最適化 ⑤⑤最新モジュール群最新モジュール群 を取得しビルドを取得しビルド ⑥⑥テスト実行!テスト実行! ⑥⑥テストの結果をテストの結果を 関係者にメールで報告関係者にメールで報告
  • 33. 足りないものは? DBサーバ Lan内独自 リポジトリ テスト スキーマ ①①ソースの追加を監視ソースの追加を監視 自身自身JobJobに反映するに反映する ②②最新の最新のDDLDDLを取得を取得 テストスキーマ構築テストスキーマ構築 ④④プログラムソースをプログラムソースを 「テスト用」に最適化「テスト用」に最適化 ⑤⑤最新モジュール群最新モジュール群 を取得しビルドを取得しビルド ⑥⑥テスト実行!テスト実行! ⑥⑥テストの結果をテストの結果を 関係者にメールで報告関係者にメールで報告 ③③最新プログラム最新プログラム ソースを取得ソースを取得
  • 34. 今回のメインは、ここのお話
  • 35. Jenkins勉強会大阪 第4回 「Jenkinsと ソース管理システム(SCM) とを連携させる道具」 -SCM to CI synchronizer- を作る
  • 36. やりたいことは ● ソース管理システム(SVN)のディレクトリを調べる ● Javaプロジェクトが増加すれば、Jenkins側に「お手 本Job」を一部変更したJobを追加
  • 37. やりたいことは ● 一日一度、一斉に流したい – Jenkins中に「キッカーJob」を設けておいて、 「ビルド後の処理-他のプロジェクトのビルド」 に結び付ける
  • 38. どうしたら出来る? ● SVN側 – 起動都度「そのディレクトリのリビジョン番号」の最 新を覚えておく – 前回と今回のリビジョン番号の間で「追加された ディレクトリ」の名前を割り出す ● Jenkins側 – SVN側のディレクトリ名=JenkinsのJob名 – 「お手本Job(テンプレート)」から「Jobごとに変わ る部分」だけ書き変えたものを登録 ● 「Job名」や「ソースのSVN-URL」など
  • 39. 問題は… ● SVN側 – SVNには「リビジョン指定でディレクトリを一覧す る」コマンドが在る ● コマンド“svn list -r [リビジョンNo] “等 – SVNには各プログラミング言語から操作できるライ ブラリが多くある ○大丈夫だ、問題無い ● Jenkins側 – 「外部からJobを増殖」ってどうするのだろう… ×大丈夫じゃない、問題だ!
  • 40. おでぷろぐらむとかあんまでけへんので ● Jenkinsの動きを外側から眺めてみよう! – JenkinsはJob追加の際、 処理時間は僅か数ミリ秒にすぎない – では、その「Job追加プロセス」をもう一 度見てみよう!
  • 41. Jenkinsの内部(超絶ざっくり) ● プログラムやリソース – War とそれが展開された ディレクトリ ● データに属するもの – $HUDSON_HOME で 与えられたディレクトリ
  • 42. JenkinsにJobを追加した場合 ● $HUDSON_HOME/jobs/ にディレクトリが追加さ れ、config.xml ファイルが出来る
  • 43. JenkinsにJobを変更した場合 ● $HUDSON_HOME/jobs/[Job名]/config.xml ファイルが変更される ● Jenkinsのデータ周りの設計はかなり素直 – 画面と設定ファイルは「ほぼ写像」 – ディレクトリ構成も推測を越えない ● Jobは手動で追加・更新して、再起動しても認識した – Jenkins側は「ディレクトリとファイルがあれば」しか見ていない – 最悪「スケジューラで日に一度再起動」しとけば良い ● 「最低限の手段」確保、これで勝つる!
  • 44. もう少しインテリジェンスな方法を ● 先の方法では 「Jenkinsサーバ内部から」 しか操作できない ● 外部から操作できないか?
  • 45. どっちが良いだろうか 1.Jenkins Remote access API – https://wiki.jenkins-ci.org/display/JA/Remote+access+API – 公式曰く「RESTのような形式」 – 公式曰く「一体何ができるの?→ジョブ作成、コピー」 – 個人的に「LAN内のJenkins探索」面白そうw →総じて「自分ではハマリそう…」 2.Jenkins-CLI – https://wiki.jenkins-ci.org/display/JA/Jenkins+CLI – 別PCのコンソールからJenkinsを操作できる ● ただし、そのPCに”jenkins-cli.jar”が必要 – java -jar jenkins-cli.jar -s [サーバ] [コマンド] →こっちのほうが楽そう♪
  • 46. CLIを使うとしても ● 普通にやると… 自作Java Program Jenkins-cli.jar コマンドライン Java -jar jenkins-cli.jar ... コマンドキック! ※多分Runtime.exec() とか… 通信! 自PC ネットワーク – なんかヤダ!(そこはかとなく原始人っぽい) ● うわっ、Javaを使って「jarをコンソールから実行」って、私のPG レベル低過ぎ…? ● これならどうか 自作JavaProgram Jenkins-cli.jar 自PC ネットワーク 通信! – ボク満足! – 「コマンド」と「CLIのJava内部Interface」ってどちらが… ● 仕様変更の可能性、中の人はこの使い方望んで無さそう… コマンド動作を エミュレート 以前の「ソース読んだ」 と言ったのはココとココ
  • 47. CLIを使って「Jobを追加する」 ● コマンドでJenkinsさんに「Job1つ分のファイル」を送りつけ る – “cat config.xml | java -jar jenkins-cli.jar create-job [ジョブ名]” ● 標準入力からなので、自力でリダイレクト を、自作プログラム(java)でエミュレート
  • 48. CLIを使って「Jobを更新する」 1.コマンドでJenkinsさんから「Job1つ分のファイル」を取得す る – “java -jar jenkins-cli.jar get-job [ジョブ名] > config.xml” – 標準出力から出すので、自力で保存 2.取得した「Job1つ分のファイル」の一部を変更 – 今回は「他のプロジェクトのビルド」-「ビルドするプロジェ クト」の末尾に文字列を加える 3.コマンドでJenkinsさんに「Job1つ分のファイル」を送りつけ る – “cat config.xml | java -jar jenkins-cli.jar update-job [ジョブ名]” ● 標準入力からなので、自力でリダイレクト を、自作プログラム(java)でエミュレート
  • 49. やることは決まった!実装方法は? ● 「Maven Plugin」で! – 予想されるツッコミ「Jenkins Pluginちゃうんかい!」 ● 理由 – その時の「マイブーム」 ● 興味在り探求中 & 手に馴染んでた – 「コマンドラインキックのツール土台」としての 「必要と思われる装備」を備える ● 設定ファイル、引数、Log、etc + Javaの資産 ● Mavenの「依存性解決」はデフォルト装備 – 他端末のコマンドラインでもJenkinsのJobでも蹴れる ● 「Mavenインストールされてれば」どの端末からでも ● Jenkinsは親和性高、pom.xmlさえあればOK
  • 50. maven-pluginについて知りたい方は… ● 続きはWebで! http://www.slideshare.net/guestd4898b/maven2
  • 51. するまでもない「なんちゃって設計」
  • 52. 実装 ※絵面はイメージです。
  • 53. なんだかんだあって… できました! https://github.com/kazuhito-m/maven-scm2cisync-plugin ※業務で使用したものではありません。すべてリライトしています。
  • 54. 「やりましたやりました詐欺」がひどいので デモしまーす
  • 55. ● デモ環境での 特殊事情 KVMは、 Linuxカーネルに搭載された "仮想OSスーパーバイザ”です (VMWare等と同じ) 全ては、 この発表用ノートの中で 起きている出来事。 デモします ● 前提 Lan内独自 リポジトリ ・SVNは、 Javaプロジェクトが 多く登録された状態 シンク用SVN 兼 Mavenリポジトリ ごった煮サーバ 192.168.1.219 192.168.1.23X 主役のJenkinsサーバ(群) この発表用ノートPC ・テストのため、 大量に作りクローン ・初期状態は 「ほぼピュア」 ・Javaは入れてある (OpenJDK7)・maven-pluginの "scm2cisync-plugin”は、 ビルド・mavenリポジトリ 登録済み。 ・scm2cisync-pluginを 動かす用設定ファイル群は、 SVNサーバに登録済み。 有線 LAN
  • 56. デモします ● お品書き 1. Jenkinsインストール 2.Jenkins-pluginをお好みで導入 3.SVNサーバからプロジェクト一つJenkinsに登録 お手本プロジェクト、模範的な設定に 4.config.xml を抽出してテンプレート化 「変化してほしいところ」に変数記述 5.SVNにテンプレートをコミット 6.scm2cisync-pluginと全JobキッカーをJenkinsに登録 7.scm2cisync-pluginを実行 JenkinsにJobが増えていたら成功!
  • 57. これに ● さらにプラスして – DBスキーマをリフレッシュしてくれる仕組み – 実行前にテスト対象プロジェクト最適化の仕組み
  • 58. 完成!三代目!! DBサーバ Lan内独自 リポジトリ テスト スキーマ ①①ソースの追加を監視ソースの追加を監視 自身自身JobJobに反映するに反映する ②②最新の最新のDDLDDLを取得を取得 テストスキーマ構築テストスキーマ構築 ③③最新プログラム最新プログラム ソースを取得ソースを取得 ④④プログラムソースをプログラムソースを 「テスト用」に最適化「テスト用」に最適化 ⑤⑤最新モジュール群最新モジュール群 を取得しビルドを取得しビルド ⑥⑥テスト実行!テスト実行! ⑥⑥テストの結果をテストの結果を 関係者にメールで報告関係者にメールで報告 「自ら肥え太る」「自ら肥え太る」 執事さん完成!執事さん完成!
  • 59. 使い出は? ● 使い方として想定できるもの – 新規大規模案件での「日々全回帰テスト」 ● 今回の例です ● 序盤時点でプロセスに組込んでしまえば – お客様企業にて既存Javaプログラム資産が ある場合の自動回帰テスト ● 「自動テスト実装済み」は必須 – 中小企業の「社内プロジェクトの全量回帰テ スト」 ● これも「自動テスト実装済み」は必須 ● 自社でやってみる予定
  • 60. これを言うとかないと… やってみて…
  • 61. やってみて解ったこと ● 「1OS:1Jenkinsサーバ」が扱い易い – 今回の事情として ● 「ジョブ大量増殖」することから「中央集権&クラスタ」より「根元 から別ける」でJenkinsを複数たてた方が管理しやすかった – 約100個のJob越えると、なぜか「起動」が2次曲線的に遅く – サブシステム別に何台か立てるがベター – Linux使ってリポジトリ足して自動or手動更新 ● 起動・停止とインストールとアップデートの管理をOS側に任せる – 試行錯誤をした結果…(次ページ) ● JenkinsとOS仮想化は相性が良い – 「良い」観点は「扱易さ」「簡単さ」「デリバる早さ」 – 試行錯誤が続くこと、水平展開を考慮すると有用 – Jenkins+必要な装備「デフォルトイメージ」用意、必要時に増殖 ● CloudBeesさんがお手本&素晴らしいというステマ
  • 62. 余談-いくつかの運用と試行錯誤 ● こんなのを試してみました 1台:1Jenkinsで、大量生産(仮想OS増殖) 1台に、tomcatを載せ、 Jenkinsを複数インスタンス 運用 1台に、1Jenkinsで、 Jobを多量に登録し、 タブを使って カテゴライズ管理
  • 63. 困っていること ● 技術面 – 並列実行が出来ない(Executer複数化orクラスタ化) ● Jenkinsサーバ1台=1つexecutorでしか動かせない ● テスト用DBの都合「executorごとに接続先変える」出来れば… – テスト実行の終わらないプロジェクトがある – OS依存・端末依存・環境依存がしつこく駆逐出来ない – SCMのbranchへの対応 ● 「本線より先行」が多くHotSpotが多く必要 ● 「branch生存期間」的なのが解らない ● 運用・プロセス面 – 観測者が居ないと意味ない – 観測者に「促す!」手段が必要 ● 管理者メールを送るも不十分 ● 「テストコケ始めた」「治った」等「変化」を「まとめて伝達」な手段
  • 64. 今後やるorやりたいな ● お仕事 – 3,000プロジェクトへの全展開 ● 600ごと、あるいはもう少し少ない単位での展開 – 全体成績収集&蓄積&分析&「促す」機構作成 – 平行化(クラスタ or Executor毎のDB振り分け化) ● 個人的 – Jenkins Plugin 化!(普通そうでしょう…) ● そもそも「CIサーバ」は世にあまり無い ● 導入の敷居がある限り「便利」じゃない – 他SCM対応 ● gitに「PJで横並ディレクトリ」有るか解りませんが
  • 65. 伝えたいこと ● Jenkinsなんだし… – 「自動化の寵児(老人)」なのだから 「Jenkinsのメンテナンス」も自動化しなきゃ♪ ● これは流行る! ● よく考えれば「あたりまえ」ですよね ● クラスタ化以外で 「管理用のJenkinsから他Jenkinsを弄らせる」 という考え方も… – すでにみんなやっている?
  • 66. 伝えたいこと ● 今からJenkinsを導入する・したい皆様へ – 本日は 「ベンダー系」「旧資産リプレイス」「大規模開発」 の前例をご説明させていただきました – 明日には「前例ありますよ!」でゴリ押し導入! ● …ちょっと無理強いが過ぎるので – 来週には上司・お客様に掛け合い、 年明けには導入している…はず – 本日使った「資料」「ソフトウェア」「作るための道 具」はすべてタダです! ● ※発表用PCと「自身の睡眠時間」は除く ● OpenSource/FreeSoftwareの違い知らん訳じゃ無い ● 反対意見・対抗勢力への材料として
  • 67. 以上です ご覧いただき ありがとうございました。 ※宣伝「アジャイルラジオ」聞いてくださいね! http://www.agileradio.info/
  • 68. 参考文献/参考URL ● MavenPlugin入門 – http://www.slideshare.net/guestd4898b/maven2 ● Jenkins Remote access API – https://wiki.jenkins-ci.org/display/JA/Remote+access+ API ● Jenkins-CLI – https://wiki.jenkins-ci.org/display/JA/Jenkins+CLI
  • 69. 余談- 他にもこんなネタを… ● 死ぬまでには誰かに伝…(王ロバ的な意味で) – SpringAOP/DIを使用したメソッド高速化キャッシュ機構 ● 超限定的シチュエーションながら、大規模プロジェクトにおける AOP活用法の一例 – Maven2を利用した「コンパイル以上ビルド未満のチェック」機構 ● 「現場ルール」「社内ルール」「チームルール」など、「人の努力」 で回っているものを自動化 – RubyとRFIDで作る「激安!勤怠記録システム」TimeSeal作ろう! ● デカい会社の入り口の「ピッ!」なアレを自分のお小遣いで簡単 に作る – ソース管理システム内全検索機構の模索 ● 現在進行中 ● 大規模現場でも、中小企業内でも…個人的には効果絶大と思う けどなぁ…
  • 70. もうちょっと考えて ● Jenkins自体からでも、外部からでも起動出来るよう に ● 「追加」は良いとして… – 「更新」は何にも当たらない ● 「ソースの変更」「Job設定変更」くらい? ● 「毎日同じ様に回してくれる」がキモ、要らない – 「削除」は「プロジェクトのSVN上での削除時」 ● JenkinsのJobを削除は人が判断する想定 – 勝手に消されても困るだろう ● 削除の絶対量がそんなに無さそう – 何もしなくて良い ● 「追加」だけ考えれば良い 没稿
  • 71. デモします ● 前提 – リンクするSVNサーバはLAN内に構築済み ● Javaプロジェクトが多く登録された状態で – LAN内Mavenサーバは構築済み – Jenkins入れるLinuxサーバは構築済み ● CentOS 6.3 – maven-pluginの”scm2cisync-plugin”は、ビルド、ローカル mavenリポジトリに登録済み – Maven-pluginを動かすための設定ファイル群はSVNサーバにコ ミット済み ● pom.xml,config.xml ● デモ環境の特殊事情 – 上記、SVN & MVNサーバ、またJenkinsサーバ用のLinuxも仮 想OS(KVM)で、このPCに構築済み 没稿

×