SlideShare ist ein Scribd-Unternehmen logo
1 von 44
Downloaden Sie, um offline zu lesen
開発以外での
             Jenkins活用方法
               #juc2012_S505
                  株式会社ニューキャスト 奥清隆
                           @kiy0taka



12年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の差分を見やすくすることで変更内
              容を確認する

             •Demo

12年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/DTP


12年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 Plugin

12年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/build


12年8月2日木曜日
CLI


             •コマンドラインインタフェース
             •groovyコマンドとJenkinsの内部APIを
              使ってより複雑なことが可能




12年8月2日木曜日
コマンド実行方法


             •java -jar jenkins-cli.jar -s http://
              jenkins-server/ groovy hello.groovy




12年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日木曜日
Demo



12年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



                      アプリケーション→Jenkins
12年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&A



12年8月2日木曜日

Weitere ähnliche Inhalte

Was ist angesagt?

継続的インテグレーションとテストの話
継続的インテグレーションとテストの話継続的インテグレーションとテストの話
継続的インテグレーションとテストの話Preferred Networks
 
jenkinsのすゝめ - 継続的インテグレーションと継続的デリバリー
jenkinsのすゝめ - 継続的インテグレーションと継続的デリバリーjenkinsのすゝめ - 継続的インテグレーションと継続的デリバリー
jenkinsのすゝめ - 継続的インテグレーションと継続的デリバリーJunya Suzuki
 
Ciじゃない方のJenkins
Ciじゃない方のJenkinsCiじゃない方のJenkins
Ciじゃない方のJenkinsKatsuhiro Miura
 
Startup jenkins!
Startup jenkins!Startup jenkins!
Startup jenkins!Kanu orz
 
Jenkinsを使った初めての継続的インテグレーション
Jenkinsを使った初めての継続的インテグレーションJenkinsを使った初めての継続的インテグレーション
Jenkinsを使った初めての継続的インテグレーションdcubeio
 
Jenkinsではじめる継続的インテグレーション
Jenkinsではじめる継続的インテグレーションJenkinsではじめる継続的インテグレーション
Jenkinsではじめる継続的インテグレーションMasanori Satoh
 
Croozにおけるjenkins活用事例20130618
Croozにおけるjenkins活用事例20130618Croozにおけるjenkins活用事例20130618
Croozにおけるjenkins活用事例20130618Katsuya Ohnishi
 
JRebel for Android 1.2.14 update
JRebel for Android 1.2.14 updateJRebel for Android 1.2.14 update
JRebel for Android 1.2.14 updatekimukou_26 Kimukou
 
JRebel for Android 1.0 を試食してみた
JRebel for Android 1.0 を試食してみたJRebel for Android 1.0 を試食してみた
JRebel for Android 1.0 を試食してみたkimukou_26 Kimukou
 
Jenkinsを利用したCI、弊社導入事例
Jenkinsを利用したCI、弊社導入事例Jenkinsを利用したCI、弊社導入事例
Jenkinsを利用したCI、弊社導入事例Ryoichi Obara
 
改訂第3版 Jenkins 実践入門 what's newから見るJenkinsのUpdate
改訂第3版 Jenkins 実践入門 what's newから見るJenkinsのUpdate改訂第3版 Jenkins 実践入門 what's newから見るJenkinsのUpdate
改訂第3版 Jenkins 実践入門 what's newから見るJenkinsのUpdateYuki Iwanari
 
Vagrantでwindows仮想環境を構築しよう
Vagrantでwindows仮想環境を構築しようVagrantでwindows仮想環境を構築しよう
Vagrantでwindows仮想環境を構築しようYuta Matsumura
 
Jenkins勉強会 in 札幌 第二部
Jenkins勉強会 in 札幌 第二部Jenkins勉強会 in 札幌 第二部
Jenkins勉強会 in 札幌 第二部cactusman
 
Jenkins+Play!で気軽にCI
Jenkins+Play!で気軽にCIJenkins+Play!で気軽にCI
Jenkins+Play!で気軽にCITakafumi Ikeda
 

Was ist angesagt? (20)

継続的インテグレーションとテストの話
継続的インテグレーションとテストの話継続的インテグレーションとテストの話
継続的インテグレーションとテストの話
 
ドリコムJenkins勉強会資料
ドリコムJenkins勉強会資料ドリコムJenkins勉強会資料
ドリコムJenkins勉強会資料
 
jenkinsのすゝめ - 継続的インテグレーションと継続的デリバリー
jenkinsのすゝめ - 継続的インテグレーションと継続的デリバリーjenkinsのすゝめ - 継続的インテグレーションと継続的デリバリー
jenkinsのすゝめ - 継続的インテグレーションと継続的デリバリー
 
Ciじゃない方のJenkins
Ciじゃない方のJenkinsCiじゃない方のJenkins
Ciじゃない方のJenkins
 
Startup jenkins!
Startup jenkins!Startup jenkins!
Startup jenkins!
 
Jenkinsを使った初めての継続的インテグレーション
Jenkinsを使った初めての継続的インテグレーションJenkinsを使った初めての継続的インテグレーション
Jenkinsを使った初めての継続的インテグレーション
 
Jenkinsではじめる継続的インテグレーション
Jenkinsではじめる継続的インテグレーションJenkinsではじめる継続的インテグレーション
Jenkinsではじめる継続的インテグレーション
 
第六回Jenkins勉強会
第六回Jenkins勉強会第六回Jenkins勉強会
第六回Jenkins勉強会
 
Jenkins 再入門
Jenkins 再入門Jenkins 再入門
Jenkins 再入門
 
Croozにおけるjenkins活用事例20130618
Croozにおけるjenkins活用事例20130618Croozにおけるjenkins活用事例20130618
Croozにおけるjenkins活用事例20130618
 
Jenkins と groovy
Jenkins と groovyJenkins と groovy
Jenkins と groovy
 
邪道Jenkins
邪道Jenkins邪道Jenkins
邪道Jenkins
 
JRebel for Android 1.2.14 update
JRebel for Android 1.2.14 updateJRebel for Android 1.2.14 update
JRebel for Android 1.2.14 update
 
JRebel for Android 1.0 を試食してみた
JRebel for Android 1.0 を試食してみたJRebel for Android 1.0 を試食してみた
JRebel for Android 1.0 を試食してみた
 
Jenkinsを利用したCI、弊社導入事例
Jenkinsを利用したCI、弊社導入事例Jenkinsを利用したCI、弊社導入事例
Jenkinsを利用したCI、弊社導入事例
 
改訂第3版 Jenkins 実践入門 what's newから見るJenkinsのUpdate
改訂第3版 Jenkins 実践入門 what's newから見るJenkinsのUpdate改訂第3版 Jenkins 実践入門 what's newから見るJenkinsのUpdate
改訂第3版 Jenkins 実践入門 what's newから見るJenkinsのUpdate
 
Vagrantでwindows仮想環境を構築しよう
Vagrantでwindows仮想環境を構築しようVagrantでwindows仮想環境を構築しよう
Vagrantでwindows仮想環境を構築しよう
 
入門!Jenkins
入門!Jenkins入門!Jenkins
入門!Jenkins
 
Jenkins勉強会 in 札幌 第二部
Jenkins勉強会 in 札幌 第二部Jenkins勉強会 in 札幌 第二部
Jenkins勉強会 in 札幌 第二部
 
Jenkins+Play!で気軽にCI
Jenkins+Play!で気軽にCIJenkins+Play!で気軽にCI
Jenkins+Play!で気軽にCI
 

Ähnlich wie JUC2012

WEBアプリケーションビルド・ テストツール YEOMAN
WEBアプリケーションビルド・ テストツール YEOMAN WEBアプリケーションビルド・ テストツール YEOMAN
WEBアプリケーションビルド・ テストツール YEOMAN kamiyam .
 
JenkinsとjMeterで負荷テストの自動化
JenkinsとjMeterで負荷テストの自動化JenkinsとjMeterで負荷テストの自動化
JenkinsとjMeterで負荷テストの自動化Satoshi Akama
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入Yu Nobuoka
 
Google IO 2012 つまみ食い(1) ADT r20 の新機能
Google IO 2012 つまみ食い(1) ADT r20 の新機能Google IO 2012 つまみ食い(1) ADT r20 の新機能
Google IO 2012 つまみ食い(1) ADT r20 の新機能Takuya Fujimura
 
Jenkins study 7 2013-01-28
Jenkins study 7 2013-01-28Jenkins study 7 2013-01-28
Jenkins study 7 2013-01-28Ato ARAKI
 
Android studio で行ってみよう!!
Android studio で行ってみよう!!Android studio で行ってみよう!!
Android studio で行ってみよう!!Kazuaki Ueda
 
CMS / BLOG and SnoWOman
CMS / BLOG and SnoWOmanCMS / BLOG and SnoWOman
CMS / BLOG and SnoWOmanWO Community
 
Hyper → Highspeed → Development
Hyper → Highspeed → DevelopmentHyper → Highspeed → Development
Hyper → Highspeed → Developmentaktsk
 
Multibranch Pipeline with Docker 入門編
Multibranch Pipeline with Docker 入門編Multibranch Pipeline with Docker 入門編
Multibranch Pipeline with Docker 入門編kimulla
 
サーバーだけじゃない!Linux デスクトップを使い倒そう その3 ― 今話題の Kotlin から Ruby、C++ 1x…の開発環境を整える
サーバーだけじゃない!Linux デスクトップを使い倒そう その3 ― 今話題の Kotlin から Ruby、C++ 1x…の開発環境を整えるサーバーだけじゃない!Linux デスクトップを使い倒そう その3 ― 今話題の Kotlin から Ruby、C++ 1x…の開発環境を整える
サーバーだけじゃない!Linux デスクトップを使い倒そう その3 ― 今話題の Kotlin から Ruby、C++ 1x…の開発環境を整えるFuminobu Takeyama
 
Chromium androidビルド
Chromium androidビルドChromium androidビルド
Chromium androidビルドHiroshi Sakate
 
PhoneGapで作るハイブリッドアプリケーション
PhoneGapで作るハイブリッドアプリケーションPhoneGapで作るハイブリッドアプリケーション
PhoneGapで作るハイブリッドアプリケーションMasahiko Tachizono
 
Sinatraでwebアプリケーション開発を学ぶ
Sinatraでwebアプリケーション開発を学ぶSinatraでwebアプリケーション開発を学ぶ
Sinatraでwebアプリケーション開発を学ぶHiroshi Oyamada
 
【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例
【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例
【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例UnityTechnologiesJapan002
 
MacRubyとHotCocoaでMacのアプリを作ってみた
MacRubyとHotCocoaでMacのアプリを作ってみたMacRubyとHotCocoaでMacのアプリを作ってみた
MacRubyとHotCocoaでMacのアプリを作ってみたYukimitsu Izawa
 
ICT ERA + ABC 2012 Tohoku
ICT ERA + ABC 2012 TohokuICT ERA + ABC 2012 Tohoku
ICT ERA + ABC 2012 TohokuTakashi EGAWA
 

Ähnlich wie JUC2012 (20)

WEBアプリケーションビルド・ テストツール YEOMAN
WEBアプリケーションビルド・ テストツール YEOMAN WEBアプリケーションビルド・ テストツール YEOMAN
WEBアプリケーションビルド・ テストツール YEOMAN
 
JenkinsとjMeterで負荷テストの自動化
JenkinsとjMeterで負荷テストの自動化JenkinsとjMeterで負荷テストの自動化
JenkinsとjMeterで負荷テストの自動化
 
恋するJenkins
恋するJenkins恋するJenkins
恋するJenkins
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
 
Jenkinsについて
JenkinsについてJenkinsについて
Jenkinsについて
 
Google IO 2012 つまみ食い(1) ADT r20 の新機能
Google IO 2012 つまみ食い(1) ADT r20 の新機能Google IO 2012 つまみ食い(1) ADT r20 の新機能
Google IO 2012 つまみ食い(1) ADT r20 の新機能
 
Aiming study#6pdf
Aiming study#6pdfAiming study#6pdf
Aiming study#6pdf
 
Jenkins study 7 2013-01-28
Jenkins study 7 2013-01-28Jenkins study 7 2013-01-28
Jenkins study 7 2013-01-28
 
Android studio で行ってみよう!!
Android studio で行ってみよう!!Android studio で行ってみよう!!
Android studio で行ってみよう!!
 
CMS / BLOG and SnoWOman
CMS / BLOG and SnoWOmanCMS / BLOG and SnoWOman
CMS / BLOG and SnoWOman
 
Hyper → Highspeed → Development
Hyper → Highspeed → DevelopmentHyper → Highspeed → Development
Hyper → Highspeed → Development
 
Cibc work kokawa
Cibc work kokawaCibc work kokawa
Cibc work kokawa
 
Multibranch Pipeline with Docker 入門編
Multibranch Pipeline with Docker 入門編Multibranch Pipeline with Docker 入門編
Multibranch Pipeline with Docker 入門編
 
サーバーだけじゃない!Linux デスクトップを使い倒そう その3 ― 今話題の Kotlin から Ruby、C++ 1x…の開発環境を整える
サーバーだけじゃない!Linux デスクトップを使い倒そう その3 ― 今話題の Kotlin から Ruby、C++ 1x…の開発環境を整えるサーバーだけじゃない!Linux デスクトップを使い倒そう その3 ― 今話題の Kotlin から Ruby、C++ 1x…の開発環境を整える
サーバーだけじゃない!Linux デスクトップを使い倒そう その3 ― 今話題の Kotlin から Ruby、C++ 1x…の開発環境を整える
 
Chromium androidビルド
Chromium androidビルドChromium androidビルド
Chromium androidビルド
 
PhoneGapで作るハイブリッドアプリケーション
PhoneGapで作るハイブリッドアプリケーションPhoneGapで作るハイブリッドアプリケーション
PhoneGapで作るハイブリッドアプリケーション
 
Sinatraでwebアプリケーション開発を学ぶ
Sinatraでwebアプリケーション開発を学ぶSinatraでwebアプリケーション開発を学ぶ
Sinatraでwebアプリケーション開発を学ぶ
 
【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例
【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例
【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例
 
MacRubyとHotCocoaでMacのアプリを作ってみた
MacRubyとHotCocoaでMacのアプリを作ってみたMacRubyとHotCocoaでMacのアプリを作ってみた
MacRubyとHotCocoaでMacのアプリを作ってみた
 
ICT ERA + ABC 2012 Tohoku
ICT ERA + ABC 2012 TohokuICT ERA + ABC 2012 Tohoku
ICT ERA + ABC 2012 Tohoku
 

Mehr von Kiyotaka Oku

Osaka Venture Meetup #3
Osaka Venture Meetup #3Osaka Venture Meetup #3
Osaka Venture Meetup #3Kiyotaka Oku
 
巨大不明ビルドの継続的統合を目的とするビルドパイプラインを主軸とした作戦要綱
巨大不明ビルドの継続的統合を目的とするビルドパイプラインを主軸とした作戦要綱巨大不明ビルドの継続的統合を目的とするビルドパイプラインを主軸とした作戦要綱
巨大不明ビルドの継続的統合を目的とするビルドパイプラインを主軸とした作戦要綱Kiyotaka Oku
 
BaseScriptについて
BaseScriptについてBaseScriptについて
BaseScriptについてKiyotaka Oku
 
ミニ四駆ジャパンカップで勝つ方法を考える
ミニ四駆ジャパンカップで勝つ方法を考えるミニ四駆ジャパンカップで勝つ方法を考える
ミニ四駆ジャパンカップで勝つ方法を考えるKiyotaka Oku
 
Jenkins plugin memo
Jenkins plugin memoJenkins plugin memo
Jenkins plugin memoKiyotaka Oku
 
GDK48総選挙の裏側
GDK48総選挙の裏側GDK48総選挙の裏側
GDK48総選挙の裏側Kiyotaka Oku
 
Grails/Groovyによる開発事例紹介
Grails/Groovyによる開発事例紹介Grails/Groovyによる開発事例紹介
Grails/Groovyによる開発事例紹介Kiyotaka Oku
 
Griffon不定期便〜G*ワークショップ編〜
Griffon不定期便〜G*ワークショップ編〜Griffon不定期便〜G*ワークショップ編〜
Griffon不定期便〜G*ワークショップ編〜Kiyotaka Oku
 
日本Grails/Groovyユーザーグループ
日本Grails/Groovyユーザーグループ日本Grails/Groovyユーザーグループ
日本Grails/GroovyユーザーグループKiyotaka Oku
 
JJUG CCC 2011 Spring
JJUG CCC 2011 SpringJJUG CCC 2011 Spring
JJUG CCC 2011 SpringKiyotaka Oku
 
Jenkinsプラグインの作り方
Jenkinsプラグインの作り方Jenkinsプラグインの作り方
Jenkinsプラグインの作り方Kiyotaka Oku
 
Jenkins and Groovy
Jenkins and GroovyJenkins and Groovy
Jenkins and GroovyKiyotaka Oku
 
とある断片の超動的言語
とある断片の超動的言語とある断片の超動的言語
とある断片の超動的言語Kiyotaka Oku
 

Mehr von Kiyotaka Oku (20)

Osaka Venture Meetup #3
Osaka Venture Meetup #3Osaka Venture Meetup #3
Osaka Venture Meetup #3
 
巨大不明ビルドの継続的統合を目的とするビルドパイプラインを主軸とした作戦要綱
巨大不明ビルドの継続的統合を目的とするビルドパイプラインを主軸とした作戦要綱巨大不明ビルドの継続的統合を目的とするビルドパイプラインを主軸とした作戦要綱
巨大不明ビルドの継続的統合を目的とするビルドパイプラインを主軸とした作戦要綱
 
BaseScriptについて
BaseScriptについてBaseScriptについて
BaseScriptについて
 
javafx-mini4wd
javafx-mini4wdjavafx-mini4wd
javafx-mini4wd
 
ミニ四駆ジャパンカップで勝つ方法を考える
ミニ四駆ジャパンカップで勝つ方法を考えるミニ四駆ジャパンカップで勝つ方法を考える
ミニ四駆ジャパンカップで勝つ方法を考える
 
Jenkins plugin memo
Jenkins plugin memoJenkins plugin memo
Jenkins plugin memo
 
Spockの基礎
Spockの基礎Spockの基礎
Spockの基礎
 
GDK48総選挙の裏側
GDK48総選挙の裏側GDK48総選挙の裏側
GDK48総選挙の裏側
 
Jenkins入門
Jenkins入門Jenkins入門
Jenkins入門
 
Grails/Groovyによる開発事例紹介
Grails/Groovyによる開発事例紹介Grails/Groovyによる開発事例紹介
Grails/Groovyによる開発事例紹介
 
Griffon不定期便〜G*ワークショップ編〜
Griffon不定期便〜G*ワークショップ編〜Griffon不定期便〜G*ワークショップ編〜
Griffon不定期便〜G*ワークショップ編〜
 
日本Grails/Groovyユーザーグループ
日本Grails/Groovyユーザーグループ日本Grails/Groovyユーザーグループ
日本Grails/Groovyユーザーグループ
 
GroovyConsole2
GroovyConsole2GroovyConsole2
GroovyConsole2
 
GroovyConsole
GroovyConsoleGroovyConsole
GroovyConsole
 
JJUG CCC 2011 Spring
JJUG CCC 2011 SpringJJUG CCC 2011 Spring
JJUG CCC 2011 Spring
 
Jenkinsプラグインの作り方
Jenkinsプラグインの作り方Jenkinsプラグインの作り方
Jenkinsプラグインの作り方
 
Devsumi Openjam
Devsumi OpenjamDevsumi Openjam
Devsumi Openjam
 
Jenkins and Groovy
Jenkins and GroovyJenkins and Groovy
Jenkins and Groovy
 
とある断片の超動的言語
とある断片の超動的言語とある断片の超動的言語
とある断片の超動的言語
 
Mote Hudson
Mote HudsonMote Hudson
Mote Hudson
 

Kürzlich hochgeladen

【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 

Kürzlich hochgeladen (9)

【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 

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日木曜日
  • 11. 人間がやらなくてもいいこともある •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日木曜日