Uploaded on

 

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
2,258
On Slideshare
0
From Embeds
0
Number of Embeds
5

Actions

Shares
Downloads
14
Comments
0
Likes
3

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活用方法 #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日木曜日