Contenu connexe
Plus de Kiyotaka Oku (20)
JUC2012
- 1. 開発以外での
Jenkins活用方法
#juc2012_S505
株式会社ニューキャスト 奥清隆
@kiy0taka
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の差分を見やすくすることで変更内
容を確認する
•Demo
12年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/DTP
12年8月2日木曜日
- 9. DTPと開発の共通点
•コンピュータを使う
•人間がやらないといけないこともある
•人間がやらなくてもいいこともある
•イテレーションする
12年8月2日木曜日
- 10. DTPと開発の異なる点
•パソコンに詳しくない
•バージョン管理はしない
•自動テストとかしない(できない)
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日木曜日
- 19. 「シェルの実行」
•自動化する処理はシェルで書く
•シェルはバージョン管理しておく
•ジョブ実行時に最新版をチェックアウト
•必要なライブラリ等はパスを通しておく
12年8月2日木曜日
- 20. ビルドのパラメータ化
•バージョン管理をしていないのでビルドに
必要なファイルを実行時に指定してもらう
12年8月2日木曜日
- 21. プラグインの活用
•実行結果を通知する
•IRC Plugin
•成果物をアップロードする
•Publish over XXX Plugin
•Groovy Postbuild Plugin
12年8月2日木曜日
- 22. 権限周りの設定
•管理者権限は必要ない
•社内利用なので権限はなくてもいいが
•ジョブの設定を間違えて壊されないように
•誰が実行したかわかるように
12年8月2日木曜日
- 24. APIの利用
•Webアプリをフロントエンドにしてバッ
クエンドにJenkinsを使う
•Webアプリ側では使いやすいUIの提供や
Jenkins側で管理しないデータを扱う
•Jenkinsのスレーブ機能で処理が増えても
簡単にクラスタを増やすことができる
12年8月2日木曜日
- 28. リモートAPI
•http://jenkins/api
•http://jenkins/job/myjob/api/json
•http://jenkins/job/myjob/build
12年8月2日木曜日
- 29. CLI
•コマンドラインインタフェース
•groovyコマンドとJenkinsの内部APIを
使ってより複雑なことが可能
12年8月2日木曜日
- 30. コマンド実行方法
•java -jar jenkins-cli.jar -s http://
jenkins-server/ groovy hello.groovy
12年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日木曜日
- 33. DTPでの利用
•PDFの差分をとるアプリケーション
•Webアプリケーションでプロジェクトや
チームという概念をあつかう
•頻繁にりようされるので使いやすいUIを提
供する
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
アプリケーション→Jenkins
12年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日木曜日