JUC2012
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

JUC2012

on

  • 2,612 views

 

Statistics

Views

Total Views
2,612
Views on SlideShare
1,632
Embed Views
980

Actions

Likes
3
Downloads
14
Comments
0

7 Embeds 980

http://d.hatena.ne.jp 858
http://orangeclover.hatenablog.com 105
http://lino.hatenablog.jp 6
http://webcache.googleusercontent.com 5
https://si0.twimg.com 3
http://localhost 2
http://hatenatunnel.appspot.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

JUC2012 Presentation Transcript

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