開発以外での             Jenkins活用方法               #juc2012_S505                  株式会社ニューキャスト 奥清隆                           @kiy...
12年8月2日木曜日
自己紹介             •奥 清隆 (id:kiy0taka、@kiy0taka)             •株式会社ニューキャスト             •大阪Jenkins勉強会             •日本Grails/Gr...
開発以外でのJenkins?    •ビルド以外のバックアップとかサーバの死活監視        とかをJenkinsでやるという話ではないです    •開発者以外の人にJenkinsを使ってもらう話です    •DTPの話が出てきますが知らな...
DTPでの利用例             •dprooFS             •PDFの差分を見やすくすることで変更内              容を確認する             •Demo12年8月2日木曜日
•従業員数 約30名             •事業内容              •システム開発事業、Web関連事業              印刷関連事業、出版事業、介護事業12年8月2日木曜日
社内のJenkins             •Jenkinsインスタンス 4(2)             •Jenkinsノード 8(5)             •ジョブ 195(59)12年8月2日木曜日
DTP             DTP(Desktop publishing、デスクトップ             パブリッシング)とは、日本語で卓上出版を             意味し、書籍、新聞などの編集に際して行う           ...
DTPと開発の共通点             •コンピュータを使う             •人間がやらないといけないこともある             •人間がやらなくてもいいこともある             •イテレーションする12年8月...
DTPと開発の異なる点             •パソコンに詳しくない             •バージョン管理はしない             •自動テストとかしない(できない)12年8月2日木曜日
人間がやらなくてもいいこともある             •DTPはそれほど自動化されていない             •自動化できるところもある             •そういう製品もあるが高価12年8月2日木曜日
自動化してみる12年8月2日木曜日
DTP用スクリプトを書く             •実行方法がわからない             •環境がちがって実行できない             •実行しても何が起こったのかわからない             •成功したのか失敗したのかよ...
なんとなく             開発現場と似ている12年8月2日木曜日
ビルドスクリプトを書く             •実行方法がわからない             •環境がちがって実行できない             •実行しても何が起こったのかわからない             •成功したのか失敗したのかよく...
そこでJenkinsですよ!             •自動化して出てくる問題はだいたい             Jenkinsが解決してくれる             •開発者だけに使わせるにはもったいない             •ビルド職...
Jenkinsの利用方法             •標準機能とプラグインを組み合わせて使う             •APIを使って独自アプリケーションと連携             •独自のプラグインを開発する12年8月2日木曜日
標準機能&プラグイン12年8月2日木曜日
「シェルの実行」             •自動化する処理はシェルで書く             •シェルはバージョン管理しておく             •ジョブ実行時に最新版をチェックアウト             •必要なライブラリ等はパ...
ビルドのパラメータ化             •バージョン管理をしていないのでビルドに             必要なファイルを実行時に指定してもらう12年8月2日木曜日
プラグインの活用             •実行結果を通知する              •IRC Plugin             •成果物をアップロードする              •Publish over XXX Plugin  ...
権限周りの設定             •管理者権限は必要ない             •社内利用なので権限はなくてもいいが             •ジョブの設定を間違えて壊されないように             •誰が実行したかわかるように...
APIを利用する12年8月2日木曜日
APIの利用             •Webアプリをフロントエンドにしてバッ              クエンドにJenkinsを使う             •Webアプリ側では使いやすいUIの提供や              Jenkin...
12年8月2日木曜日
12年8月2日木曜日
12年8月2日木曜日
リモートAPI             •http://jenkins/api             •http://jenkins/job/myjob/api/json             •http://jenkins/job/myj...
CLI             •コマンドラインインタフェース             •groovyコマンドとJenkinsの内部APIを              使ってより複雑なことが可能12年8月2日木曜日
コマンド実行方法             •java -jar jenkins-cli.jar -s http://              jenkins-server/ groovy hello.groovy12年8月2日木曜日
プログラムからの利用       import hudson.cli.CLI       def cli = new CLI(http://jenkins-server/)       def args = [groovy, File(hell...
Demo12年8月2日木曜日
DTPでの利用             •PDFの差分をとるアプリケーション             •Webアプリケーションでプロジェクトや             チームという概念をあつかう             •頻繁にりようされるので...
プラグインを作る12年8月2日木曜日
特定の処理をプラグイン化             •hudson.tasks.Builderを継承して実装             •Builderの実装はたくさんあるので他のプ              ラグインのソースを見ればわかるはず12...
独自プラグインのメリット             •ほとんどない             •開発用プラグインの様に万人向けじゃな             かったりする             •Javaのライブラリとかないので結局コマ     ...
より連携しやすくするプラグイン             •結局、自動化したい処理はバラバラ             •いつも作っているアプリケーションから連             携しやすくするぐらいが丁度いい12年8月2日木曜日
Groovy Remote Control             •Jenkinsとの連携をよりやりやすくするた              めのプラグイン             •Groovy Remote Control         ...
利用方法1      import groovyx.remote.client.RemoteControl      import groovyx.remote.transport.http.HttpTransport      def tra...
利用方法2             •Jenkinsからアプリケーションのコードを              実行             •アプリケーション側で連携用APIを実装す              る必要はない           ...
課題             •アプリケーション側のオブジェクトをどう             扱うか?             •アプリケーションのライブラリを              Jenkinsのクラスパスに指定する?        ...
まとめ             •Jenkins本体とプラグインだけでも十分で              きる             •APIで連携するアプリケーションをつくっ              てより使いやすく           ...
まとめ             •Jenkinsの使い方としてはちょっとやり過              ぎ感も否めない。             •でも社内では大活躍              •Jenkinsを知らない人はいない      ...
Q&A12年8月2日木曜日
Upcoming SlideShare
Loading in...5
×

JUC2012

2,469

Published on

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

No Downloads
Views
Total Views
2,469
On Slideshare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
15
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Transcript of "JUC2012"

  1. 1. 開発以外での Jenkins活用方法 #juc2012_S505 株式会社ニューキャスト 奥清隆 @kiy0taka12年8月2日木曜日
  2. 2. 12年8月2日木曜日
  3. 3. 自己紹介 •奥 清隆 (id:kiy0taka、@kiy0taka) •株式会社ニューキャスト •大阪Jenkins勉強会 •日本Grails/Groovyユーザーグループ •Jenkinsプラグイン開発者12年8月2日木曜日
  4. 4. 開発以外でのJenkins? •ビルド以外のバックアップとかサーバの死活監視 とかをJenkinsでやるという話ではないです •開発者以外の人にJenkinsを使ってもらう話です •DTPの話が出てきますが知らなくても問題ないで す。私もよく知りません。 •Jenkinsを使った自動化のヒントになればと思い ます。12年8月2日木曜日
  5. 5. DTPでの利用例 •dprooFS •PDFの差分を見やすくすることで変更内 容を確認する •Demo12年8月2日木曜日
  6. 6. •従業員数 約30名 •事業内容 •システム開発事業、Web関連事業 印刷関連事業、出版事業、介護事業12年8月2日木曜日
  7. 7. 社内のJenkins •Jenkinsインスタンス 4(2) •Jenkinsノード 8(5) •ジョブ 195(59)12年8月2日木曜日
  8. 8. DTP DTP(Desktop publishing、デスクトップ パブリッシング)とは、日本語で卓上出版を 意味し、書籍、新聞などの編集に際して行う 割り付けなどの作業をコンピュータ上で行 い、プリンターで出力を行うこと。 http://ja.wikipedia.org/wiki/DTP12年8月2日木曜日
  9. 9. DTPと開発の共通点 •コンピュータを使う •人間がやらないといけないこともある •人間がやらなくてもいいこともある •イテレーションする12年8月2日木曜日
  10. 10. DTPと開発の異なる点 •パソコンに詳しくない •バージョン管理はしない •自動テストとかしない(できない)12年8月2日木曜日
  11. 11. 人間がやらなくてもいいこともある •DTPはそれほど自動化されていない •自動化できるところもある •そういう製品もあるが高価12年8月2日木曜日
  12. 12. 自動化してみる12年8月2日木曜日
  13. 13. DTP用スクリプトを書く •実行方法がわからない •環境がちがって実行できない •実行しても何が起こったのかわからない •成功したのか失敗したのかよくわからない12年8月2日木曜日
  14. 14. なんとなく 開発現場と似ている12年8月2日木曜日
  15. 15. ビルドスクリプトを書く •実行方法がわからない •環境がちがって実行できない •実行しても何が起こったのかわからない •成功したのか失敗したのかよくわからない12年8月2日木曜日
  16. 16. そこでJenkinsですよ! •自動化して出てくる問題はだいたい Jenkinsが解決してくれる •開発者だけに使わせるにはもったいない •ビルド職人=自動化職人12年8月2日木曜日
  17. 17. Jenkinsの利用方法 •標準機能とプラグインを組み合わせて使う •APIを使って独自アプリケーションと連携 •独自のプラグインを開発する12年8月2日木曜日
  18. 18. 標準機能&プラグイン12年8月2日木曜日
  19. 19. 「シェルの実行」 •自動化する処理はシェルで書く •シェルはバージョン管理しておく •ジョブ実行時に最新版をチェックアウト •必要なライブラリ等はパスを通しておく12年8月2日木曜日
  20. 20. ビルドのパラメータ化 •バージョン管理をしていないのでビルドに 必要なファイルを実行時に指定してもらう12年8月2日木曜日
  21. 21. プラグインの活用 •実行結果を通知する •IRC Plugin •成果物をアップロードする •Publish over XXX Plugin •Groovy Postbuild Plugin12年8月2日木曜日
  22. 22. 権限周りの設定 •管理者権限は必要ない •社内利用なので権限はなくてもいいが •ジョブの設定を間違えて壊されないように •誰が実行したかわかるように12年8月2日木曜日
  23. 23. APIを利用する12年8月2日木曜日
  24. 24. APIの利用 •Webアプリをフロントエンドにしてバッ クエンドにJenkinsを使う •Webアプリ側では使いやすいUIの提供や Jenkins側で管理しないデータを扱う •Jenkinsのスレーブ機能で処理が増えても 簡単にクラスタを増やすことができる12年8月2日木曜日
  25. 25. 12年8月2日木曜日
  26. 26. 12年8月2日木曜日
  27. 27. 12年8月2日木曜日
  28. 28. リモートAPI •http://jenkins/api •http://jenkins/job/myjob/api/json •http://jenkins/job/myjob/build12年8月2日木曜日
  29. 29. CLI •コマンドラインインタフェース •groovyコマンドとJenkinsの内部APIを 使ってより複雑なことが可能12年8月2日木曜日
  30. 30. コマンド実行方法 •java -jar jenkins-cli.jar -s http:// jenkins-server/ groovy hello.groovy12年8月2日木曜日
  31. 31. プログラムからの利用 import hudson.cli.CLI def cli = new CLI(http://jenkins-server/) def args = [groovy, File(hello.groovy).absolutePath] cli.execute(args, System.in, System.out, System.err)12年8月2日木曜日
  32. 32. Demo12年8月2日木曜日
  33. 33. DTPでの利用 •PDFの差分をとるアプリケーション •Webアプリケーションでプロジェクトや チームという概念をあつかう •頻繁にりようされるので使いやすいUIを提 供する12年8月2日木曜日
  34. 34. プラグインを作る12年8月2日木曜日
  35. 35. 特定の処理をプラグイン化 •hudson.tasks.Builderを継承して実装 •Builderの実装はたくさんあるので他のプ ラグインのソースを見ればわかるはず12年8月2日木曜日
  36. 36. 独自プラグインのメリット •ほとんどない •開発用プラグインの様に万人向けじゃな かったりする •Javaのライブラリとかないので結局コマ ンドをJavaからプロセス実行することに •シェルで書いた方が扱いやすい12年8月2日木曜日
  37. 37. より連携しやすくするプラグイン •結局、自動化したい処理はバラバラ •いつも作っているアプリケーションから連 携しやすくするぐらいが丁度いい12年8月2日木曜日
  38. 38. Groovy Remote Control •Jenkinsとの連携をよりやりやすくするた めのプラグイン •Groovy Remote Control •http://groovy.codehaus.org/ modules/remote/ •開発中。近日公開予定12年8月2日木曜日
  39. 39. 利用方法1 import groovyx.remote.client.RemoteControl import groovyx.remote.transport.http.HttpTransport def transport = new HttpTransport(http://jenkins-server/) def remote = new RemoteControl(transport) def result = remote { // ここの処理はJenkins上で実行される // シリアライズ可能なオブジェクトを返すことが可能 return hello } println result アプリケーション→Jenkins12年8月2日木曜日
  40. 40. 利用方法2 •Jenkinsからアプリケーションのコードを 実行 •アプリケーション側で連携用APIを実装す る必要はない •アプリケーションにあるビジネスロジック をJenkinsから実行する Jenkins→アプリケーション12年8月2日木曜日
  41. 41. 課題 •アプリケーション側のオブジェクトをどう 扱うか? •アプリケーションのライブラリを Jenkinsのクラスパスに指定する? •アプリケーション側でコンテキストを提 供する?12年8月2日木曜日
  42. 42. まとめ •Jenkins本体とプラグインだけでも十分で きる •APIで連携するアプリケーションをつくっ てより使いやすく •開発者以外に使ってもらうには工夫が必要12年8月2日木曜日
  43. 43. まとめ •Jenkinsの使い方としてはちょっとやり過 ぎ感も否めない。 •でも社内では大活躍 •Jenkinsを知らない人はいない •開発者だけで使うにはもったいない12年8月2日木曜日
  44. 44. Q&A12年8月2日木曜日
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×