• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
JUC2012
 

JUC2012

on

  • 2,482 views

 

Statistics

Views

Total Views
2,482
Views on SlideShare
1,523
Embed Views
959

Actions

Likes
3
Downloads
14
Comments
0

6 Embeds 959

http://d.hatena.ne.jp 857
http://orangeclover.hatenablog.com 91
http://webcache.googleusercontent.com 5
https://si0.twimg.com 3
http://localhost 2
http://hatenatunnel.appspot.com 1

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 JUC2012 Presentation Transcript

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