Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
How to develop Jenkins plugin using to ruby and...
Search
SHIBATA Hiroshi
July 29, 2012
Technology
3
3k
How to develop Jenkins plugin using to ruby and Jenkins.rb
SHIBATA Hiroshi
July 29, 2012
Tweet
Share
More Decks by SHIBATA Hiroshi
See All by SHIBATA Hiroshi
How to make faster release cycle of Ruby?
hsbt
2
5.6k
Ruby の開発を支えるエコシステム
hsbt
4
2.2k
Why is building the Ruby environment hard?
hsbt
6
7.6k
開発環境へのこだわり
hsbt
16
12k
OSS ことはじめ
hsbt
5
1.4k
GMO DevNight 05 在宅勤務開始から2ヶ月でやったこと
hsbt
2
540
Development Environment 2019
hsbt
1
340
How to become the Psychic
hsbt
0
2k
Software Development
hsbt
1
6.5k
Other Decks in Technology
See All in Technology
AI によるドキュメント処理を加速するためのOCR 結果の永続化と再利用戦略
tomoaki25
0
210
Wasmで社内ツールを作って配布しよう
askua
0
160
With Devin -AIの自律とメンバーの自立
kotanin0
2
910
AWS表彰プログラムとキャリアについて
naoki_0531
1
150
ecspressoの設計思想に至る道 / sekkeinight2025
fujiwara3
12
2.1k
AI エンジニアの立場からみた、AI コーディング時代の開発の品質向上の取り組みと妄想
soh9834
8
610
2025-07-25 NOT A HOTEL TECH TALK ━ スマートホーム開発の最前線 ━ SOFTWARE
wakinchan
0
180
AIに全任せしないコーディングとマネジメント思考
kikuchikakeru
0
290
Unson OS|48時間で「売れるか」を判定する AI 市場検証プラットフォーム
unson
0
140
経験がないことを言い訳にしない、 AI時代の他領域への染み出し方
parayama0625
0
280
【CEDEC2025】ブランド力アップのためのコンテンツマーケティング~ゲーム会社における情報資産の活かし方~
cygames
PRO
0
140
恐怖!テストコードなき夜
tsukuboshi
2
100
Featured
See All Featured
Docker and Python
trallard
45
3.5k
StorybookのUI Testing Handbookを読んだ
zakiyama
30
5.9k
RailsConf 2023
tenderlove
30
1.2k
GitHub's CSS Performance
jonrohan
1031
460k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
130
19k
How to Ace a Technical Interview
jacobian
278
23k
Optimizing for Happiness
mojombo
379
70k
Music & Morning Musume
bryan
46
6.7k
Typedesign – Prime Four
hannesfritz
42
2.7k
Side Projects
sachag
455
43k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
45
7.5k
Building an army of robots
kneath
306
45k
Transcript
ࣲాതࢤ SHIBATA Hiroshi QBQFSCPZDP BTBLVTBSC paperboy&co., Inc. How to develop
Jenkins plugin using to ruby and Jenkins.rb ൃදॴ+FOLJOT6TFS$POGFSFODF 2012-07-29(Sun) KFOLJOTSCͰ࢝ΊΔ 3VCZͰ+FOLJOT ϓϥάΠϯ࡞
+FOLJOT6TFS $POGFSFODF5PLZP ։࠵͓ΊͰͱ͏͍͟͝·͢ɻ
εϙϯαʔͷ͝հ
ࣗݾհ
SHIBATA Hiroshi
http://twitter.com/hsbt/ http://www.hsbt.org/ http://github.com/hsbt/
None
None
ձࣾհ ```
None
ࣄ༰
ٕज़ج൫ උ ΤϯδχΞ
None
None
ձࣾհ ऴΘΓ
None
๛ͳϓϥάΠϯ
ࣗͰϓ ϥάΠϯͳ Β࡞Εͦ͏ ͳؾ͕͢Δ
None
+BWB
KFOLJOTSC
1.KBWBSVOUJNF 4.SVCZUPPMTKQJ 3.SVCZUPPMTDMJ 2.SVCZSVOUJNF
KBWBSVOUJNF SVCZSVOUJNF +FOLJOTʹ+3VCZΛ ΈࠐΉ +FOLJOTͷ+BWBΫϥε Λ+3VCZͰϥούʔ͢Δ
SVCZUPPMTDMJ SVCZUPPMTKQJ KFOLJOTΛૢ࡞͢Δౕ ࠓͳ͢͜ͱ
KQJSC
SCFOWJOTUBMMKSVCZ SCFOWTIFMMKSVCZ HFNJOTUBMMKQJ
$PNNBOET KQJIFMQ<$0.."/%> KQJOFX/".& KQJHFOFSBUF<PQUJPOT><BSHVNFOUT> KQJCVJME KQJTFSWFS KQJSFMFBTF KQJWFSTJPO
KQJ IFMQ KQJ WFSTJPO
লུ
KQJ OFX
KQJOFXSCFOW DSFBUFSCFOW(FNpMF DSFBUFSCFOWKFOLJOT SCFOWQMVHJOTQFD
TPVSDFSVCZHFNT HFNKFOLJOTQMVHJOSVOUJNF d Gemfile
+FOLJOT1MVHJO4QFDJpDBUJPOOFXEPcQMVHJOc QMVHJOOBNFKFOLJOTSCFOW QMVHJOEJTQMBZ@OBNF+FOLJOT3CFOW1MVHJO QMVHJOWFSTJPO QMVHJOEFTDSJQUJPO50%0FOUFSEFTDSJQUJPO IFSF QMVHJOVSMIUUQTXJLJKFOLJOTDJPSH EJTQMBZ+&/,*/4+FOLJOT 3CFOW 1MVHJO
QMVHJOEFWFMPQFE@CZTIJCBUBIJSPTIJ 4)*#"5")JSPTIJTIJCBUBIJSPTIJ!HNBJMDPN QMVHJOVTFT@SFQPTJUPSZHJUIVCKFOLJOT SCFOWQMVHJO QMVHJOEFQFOET@POSVCZSVOUJNF FOE jenkins-rbenv.pluginspec
+FOLJOT1MVHJO4QFDJpDBUJPOOFXEPcQMVHJOc QMVHJOOBNFKFOLJOTSCFOW QMVHJOEJTQMBZ@OBNF+FOLJOT3CFOW1MVHJO QMVHJOWFSTJPO QMVHJOEFTDSJQUJPO50%0FOUFSEFTDSJQUJPO IFSF QMVHJOVSMIUUQTXJLJKFOLJOTDJPSH EJTQMBZ+&/,*/4+FOLJOT 3CFOW 1MVHJO
QMVHJOEFWFMPQFE@CZTIJCBUBIJSPTIJ 4)*#"5")JSPTIJTIJCBUBIJSPTIJ!HNBJMDPN QMVHJOVTFT@SFQPTJUPSZHJUIVCKFOLJOT SCFOWQMVHJO QMVHJOEFQFOET@POSVCZSVOUJNF FOE jenkins-rbenv.pluginspec
+FOLJOT1MVHJO4QFDJpDBUJPOOFXEPcQMVHJOc QMVHJOOBNFKFOLJOTSCFOW QMVHJOEJTQMBZ@OBNF+FOLJOT3CFOW1MVHJO QMVHJOWFSTJPO QMVHJOEFTDSJQUJPO50%0FOUFSEFTDSJQUJPO IFSF QMVHJOVSMIUUQTXJLJKFOLJOTDJPSH EJTQMBZ+&/,*/4+FOLJOT 3CFOW 1MVHJO
QMVHJOEFWFMPQFE@CZTIJCBUBIJSPTIJ 4)*#"5")JSPTIJTIJCBUBIJSPTIJ!HNBJMDPN QMVHJOVTFT@SFQPTJUPSZHJUIVCKFOLJOT SCFOWQMVHJO QMVHJOEFQFOET@POSVCZSVOUJNF FOE jenkins-rbenv.pluginspec
+FOLJOT1MVHJO4QFDJpDBUJPOOFXEPcQMVHJOc QMVHJOOBNFKFOLJOTSCFOW QMVHJOEJTQMBZ@OBNF+FOLJOT3CFOW1MVHJO QMVHJOWFSTJPO QMVHJOEFTDSJQUJPO50%0FOUFSEFTDSJQUJPO IFSF QMVHJOVSMIUUQTXJLJKFOLJOTDJPSH EJTQMBZ+&/,*/4+FOLJOT 3CFOW 1MVHJO
QMVHJOEFWFMPQFE@CZTIJCBUBIJSPTIJ 4)*#"5")JSPTIJTIJCBUBIJSPTIJ!HNBJMDPN QMVHJOVTFT@SFQPTJUPSZHJUIVCKFOLJOT SCFOWQMVHJO QMVHJOEFQFOET@POSVCZSVOUJNF FOE jenkins-rbenv.pluginspec
+FOLJOT1MVHJO4QFDJpDBUJPOOFXEPcQMVHJOc QMVHJOOBNFKFOLJOTSCFOW QMVHJOEJTQMBZ@OBNF+FOLJOT3CFOW1MVHJO QMVHJOWFSTJPO QMVHJOEFTDSJQUJPO50%0FOUFSEFTDSJQUJPO IFSF QMVHJOVSMIUUQTXJLJKFOLJOTDJPSH EJTQMBZ+&/,*/4+FOLJOT 3CFOW 1MVHJO
QMVHJOEFWFMPQFE@CZTIJCBUBIJSPTIJ 4)*#"5")JSPTIJTIJCBUBIJSPTIJ!HNBJMDPN QMVHJOVTFT@SFQPTJUPSZHJUIVCKFOLJOT SCFOWQMVHJO QMVHJOEFQFOET@POSVCZSVOUJNF FOE jenkins-rbenv.pluginspec
+FOLJOT1MVHJO4QFDJpDBUJPOOFXEPcQMVHJOc QMVHJOOBNFKFOLJOTSCFOW QMVHJOEJTQMBZ@OBNF+FOLJOT3CFOW1MVHJO QMVHJOWFSTJPO QMVHJOEFTDSJQUJPO50%0FOUFSEFTDSJQUJPO IFSF QMVHJOVSMIUUQTXJLJKFOLJOTDJPSH EJTQMBZ+&/,*/4+FOLJOT 3CFOW 1MVHJO
QMVHJOEFWFMPQFE@CZTIJCBUBIJSPTIJ 4)*#"5")JSPTIJTIJCBUBIJSPTIJ!HNBJMDPN QMVHJOVTFT@SFQPTJUPSZHJUIVCKFOLJOT SCFOWQMVHJO QMVHJOEFQFOET@POSVCZSVOUJNF FOE jenkins-rbenv.pluginspec
+FOLJOT1MVHJO4QFDJpDBUJPOOFXEPcQMVHJOc QMVHJOOBNFKFOLJOTSCFOW QMVHJOEJTQMBZ@OBNF+FOLJOT3CFOW1MVHJO QMVHJOWFSTJPO QMVHJOEFTDSJQUJPO50%0FOUFSEFTDSJQUJPO IFSF QMVHJOVSMIUUQTXJLJKFOLJOTDJPSH EJTQMBZ+&/,*/4+FOLJOT 3CFOW 1MVHJO
QMVHJOEFWFMPQFE@CZTIJCBUBIJSPTIJ 4)*#"5")JSPTIJTIJCBUBIJSPTIJ!HNBJMDPN QMVHJOVTFT@SFQPTJUPSZHJUIVCKFOLJOT SCFOWQMVHJO QMVHJOEFQFOET@POSVCZSVOUJNF FOE jenkins-rbenv.pluginspec
+FOLJOT1MVHJO4QFDJpDBUJPOOFXEPcQMVHJOc QMVHJOOBNFKFOLJOTSCFOW QMVHJOEJTQMBZ@OBNF+FOLJOT3CFOW1MVHJO QMVHJOWFSTJPO QMVHJOEFTDSJQUJPO50%0FOUFSEFTDSJQUJPO IFSF QMVHJOVSMIUUQTXJLJKFOLJOTDJPSH EJTQMBZ+&/,*/4+FOLJOT 3CFOW 1MVHJO
QMVHJOEFWFMPQFE@CZTIJCBUBIJSPTIJ 4)*#"5")JSPTIJTIJCBUBIJSPTIJ!HNBJMDPN QMVHJOVTFT@SFQPTJUPSZHJUIVCKFOLJOT SCFOWQMVHJO QMVHJOEFQFOET@POSVCZSVOUJNF FOE jenkins-rbenv.pluginspec
+FOLJOT1MVHJO4QFDJpDBUJPOOFXEPcQMVHJOc QMVHJOOBNFKFOLJOTSCFOW QMVHJOEJTQMBZ@OBNF+FOLJOT3CFOW1MVHJO QMVHJOWFSTJPO QMVHJOEFTDSJQUJPO50%0FOUFSEFTDSJQUJPO IFSF QMVHJOVSMIUUQTXJLJKFOLJOTDJPSH EJTQMBZ+&/,*/4+FOLJOT 3CFOW 1MVHJO
QMVHJOEFWFMPQFE@CZTIJCBUBIJSPTIJ 4)*#"5")JSPTIJTIJCBUBIJSPTIJ!HNBJMDPN QMVHJOVTFT@SFQPTJUPSZHJUIVCKFOLJOT SCFOWQMVHJO QMVHJOEFQFOET@POSVCZSVOUJNF FOE jenkins-rbenv.pluginspec
KQJ HFOFSBUF
"WBJMBCMF(FOFSBUPST QVCMJTIFS CVJMEFS XSBQQFS OPEF@QSPQFSUZ SVO@MJTUFOFS DPNQVUFS@MJTUFOFS
1.QVCMJTIFS 3.XSBQQFS 2.CVJMEFS ϏϧυޙʹԿ͔Δ Ϗϧυͱͯ͠Կ͔Δ ϏϧυલޙʹॲཧΛڬΉ
4.OPEF@QSPQFSUZ 6.DPNQVUFS@MJTUFOFS 5.SVO@MJTUFOFS jenkins ͷ node ઃఆ ϏϧυͷྃΛड͚औͬ ͯԿ͔Δ εςʔλε͕มΘͬͨ࣌
ʹԿ͔Δ
XSBQQFS Λ࡞ͬͯΈΑ͏
DESCFOW KQJHFOFSBUFXSBQQFS SCFOW DSFBUFNPEFMT SCFOW@XSBQQFSSC
DMBTT3CFOW8SBQQFS +FOLJOT5BTLT#VJME8SBQQFS EJTQMBZ@OBNF3CFOWCVJMEXSBQQFS EFGJOJUJBMJ[F BUUST\^ FOE EFGTFUVQ CVJME MBVODIFS MJTUFOFS
FOE EFGUFBSEPXO CVJME MJTUFOFS FOE FOE rbenv_wrapper.rb
DMBTT3CFOW8SBQQFS +FOLJOT5BTLT#VJME8SBQQFS EJTQMBZ@OBNF3CFOWCVJMEXSBQQFS EFGJOJUJBMJ[F BUUST\^ FOE EFGTFUVQ CVJME MBVODIFS MJTUFOFS
FOE EFGUFBSEPXO CVJME MJTUFOFS FOE FOE rbenv_wrapper.rb
DMBTT3CFOW8SBQQFS +FOLJOT5BTLT#VJME8SBQQFS EJTQMBZ@OBNF3CFOWCVJMEXSBQQFS EFGJOJUJBMJ[F BUUST\^ FOE EFGTFUVQ CVJME MBVODIFS MJTUFOFS
FOE EFGUFBSEPXO CVJME MJTUFOFS FOE FOE rbenv_wrapper.rb
DMBTT3CFOW8SBQQFS +FOLJOT5BTLT#VJME8SBQQFS EJTQMBZ@OBNF3CFOWCVJMEXSBQQFS EFGJOJUJBMJ[F BUUST\^ FOE EFGTFUVQ CVJME MBVODIFS MJTUFOFS
FOE EFGUFBSEPXO CVJME MJTUFOFS FOE FOE rbenv_wrapper.rb
ઃఆը໘Λ ͍͍ͨ
None
NLEJSQWJFXTSCFOW@XSBQQFS UPVDIWJFXTSCFOW@XSBQQFS DPOpHFSC
GUBHMJC MJCGPSN GFOUSZ UJUMF7FSTJPO pFME WFSTJPO EFTDSJQUJPO36#: TVDIBT Q
EP GUFYUCPY FOE GFOUSZ UJUMF1SFJOTUBMMHFNMJTU pFME HFN@MJTU EFTDSJQUJPOFYCVOEMFS SBLF EP GUFYUCPY WBMVFCVOEMFS SBLF FOE config.erb
None
KFMMZUBHMJC
DMBTT3CFOW8SBQQFS +FOLJOT5BTLT#VJME8SBQQFS EJTQMBZ@OBNF3CFOWCVJMEXSBQQFS EFGJOJUJBMJ[F BUUST\^ FOE EFGTFUVQ CVJME MBVODIFS MJTUFOFS
FOE EFGUFBSEPXO CVJME MJTUFOFS FOE FOE rbenv_wrapper.rb
BUUS@BDDFTTPSWFSTJPO EFGJOJUJBMJ[F BUUST\^ !WFSTJPO BUUST<WFSTJPO> FOE rbenv_wrapper.rb
DMBTT3CFOW8SBQQFS +FOLJOT5BTLT#VJME8SBQQFS EJTQMBZ@OBNF3CFOWCVJMEXSBQQFS EFGJOJUJBMJ[F BUUST\^ FOE EFGTFUVQ CVJME MBVODIFS MJTUFOFS
FOE EFGUFBSEPXO CVJME MJTUFOFS FOE FOE rbenv_wrapper.rb
JOTUBMM@QBUIdSCFOWWFSTJPOT\!WFSTJPO^ CFHJO VOMFTT'JMF5FTUEJSFDUPSZ 'JMFFYQBOE@QBUI dSCFOW MJTUFOFS*OTUBMMSCFOWaO MBVODIFSFYFDVUF CBTI D
HJUDMPOF \3#&/7@1"5)^dSCFOW \PVUMJTUFOFS^ FOE SFTDVF CVJMEBCPSU FOE rbenv_wrapper.rb
JOTUBMM@QBUIdSCFOWWFSTJPOT\!WFSTJPO^ CFHJO VOMFTT'JMF5FTUEJSFDUPSZ 'JMFFYQBOE@QBUI dSCFOW MJTUFOFS*OTUBMMSCFOWaO MBVODIFSFYFDVUF CBTI D
HJUDMPOF \3#&/7@1"5)^dSCFOW \PVUMJTUFOFS^ FOE SFTDVF CVJMEBCPSU FOE rbenv_wrapper.rb
JOTUBMM@QBUIdSCFOWWFSTJPOT\!WFSTJPO^ CFHJO VOMFTT'JMF5FTUEJSFDUPSZ 'JMFFYQBOE@QBUI dSCFOW MJTUFOFS*OTUBMMSCFOWaO MBVODIFSFYFDVUF CBTI D
HJUDMPOF \3#&/7@1"5)^dSCFOW \PVUMJTUFOFS^ FOE SFTDVF CVJMEBCPSU FOE rbenv_wrapper.rb
JOTUBMM@QBUIdSCFOWWFSTJPOT\!WFSTJPO^ CFHJO VOMFTT'JMF5FTUEJSFDUPSZ 'JMFFYQBOE@QBUI dSCFOW MJTUFOFS*OTUBMMSCFOWaO MBVODIFSFYFDVUF CBTI D
HJUDMPOF \3#&/7@1"5)^dSCFOW \PVUMJTUFOFS^ FOE SFTDVF CVJMEBCPSU FOE rbenv_wrapper.rb
KQJ CVJME
1.QMVHJOTQFD͔Β QPNYNMΛੜ 2.IQJϑΝΠϧΛੜ
KQJ TFSWFS
QMVHJOΛ ಡΈࠐΜͩ +FOLJOT Λىಈ͢Δ
खಈςετ
KQJ SFMFBTF
1.KFOLJOTDJPSHʹΞο ϓϩʔυ͢Δ 3.Ҿແ͠TOBQTIPU SFMFBTFΛ͚Δͱ QSPEVDUJPO 2.dKFOLJOTDJPSHͷ ΞΧϯτใΛ༻
ͦͷଞ
UFTUVOJU PS STQFD ςετ
͑ͳ͍ͷͰ +BWBϥΠϒϥϦ ͰؤுΔ rubygems
etc https://github.com/jenkinsci/rvm-plugin https://github.com/hsbt/jenkins-rbenv-plugin https://github.com/takai/jenkins-hipchat-publisher-plugin
8SJUFZPVSQMVHJO