$30 off During Our Annual Pro Sale. View Details »

How to develop Jenkins plugin using to ruby and Jenkins.rb

How to develop Jenkins plugin using to ruby and Jenkins.rb

SHIBATA Hiroshi

July 29, 2012
Tweet

More Decks by SHIBATA Hiroshi

Other Decks in Technology

Transcript

  1. ࣲాതࢤ
    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
    ϓϥάΠϯ࡞੒

    View Slide

  2. +FOLJOT6TFS
    $POGFSFODF5PLZP
    ։࠵͓ΊͰͱ͏͍͟͝·͢ɻ

    View Slide

  3. εϙϯαʔͷ͝঺հ

    View Slide

  4. ࣗݾ঺հ

    View Slide

  5. SHIBATA Hiroshi

    View Slide

  6. http://twitter.com/hsbt/
    http://www.hsbt.org/
    http://github.com/hsbt/

    View Slide

  7. View Slide

  8. View Slide

  9. ձࣾ঺հ
    ```

    View Slide

  10. View Slide

  11. ࢓ࣄ಺༰

    View Slide

  12. ٕज़ج൫
    ੔උ
    ΤϯδχΞ

    View Slide

  13. View Slide

  14. View Slide

  15. ձࣾ঺հ
    ऴΘΓ

    View Slide

  16. View Slide

  17. ๛෋ͳϓϥάΠϯ

    View Slide

  18. ࣗ෼Ͱ΋ϓ
    ϥάΠϯͳ
    Β࡞Εͦ͏
    ͳؾ͕͢Δ

    View Slide

  19. View Slide

  20. +BWB

    View Slide

  21. KFOLJOTSC

    View Slide

  22. 1.KBWBSVOUJNF
    4.SVCZUPPMTKQJ
    3.SVCZUPPMTDMJ
    2.SVCZSVOUJNF

    View Slide

  23. KBWBSVOUJNF
    SVCZSVOUJNF
    +FOLJOTʹ+3VCZΛ
    ૊ΈࠐΉ
    +FOLJOTͷ+BWBΫϥε
    Λ+3VCZͰϥούʔ͢Δ

    View Slide

  24. SVCZUPPMTDMJ
    SVCZUPPMTKQJ
    KFOLJOTΛૢ࡞͢Δౕ
    ࠓ೔͸ͳ͢͜ͱ

    View Slide

  25. KQJSC

    View Slide

  26. SCFOWJOTUBMMKSVCZ
    SCFOWTIFMMKSVCZ
    HFNJOTUBMMKQJ

    View Slide

  27. $PNNBOET
    KQJIFMQ<$0.."/%>
    KQJOFX/".&
    KQJHFOFSBUF
    KQJCVJME
    KQJTFSWFS
    KQJSFMFBTF
    KQJWFSTJPO

    View Slide

  28. KQJ
    IFMQ
    KQJ
    WFSTJPO

    View Slide

  29. লུ

    View Slide

  30. KQJ
    OFX

    View Slide

  31. KQJOFXSCFOW
    DSFBUFSCFOW(FNpMF
    DSFBUFSCFOWKFOLJOT
    SCFOWQMVHJOTQFD

    View Slide

  32. TPVSDFSVCZHFNT
    HFNKFOLJOTQMVHJOSVOUJNF d

    Gemfile

    View Slide

  33. +FOLJOT1MVHJO4QFDJpDBUJPOOFXEPcQMVHJOc
    QMVHJOOBNFKFOLJOTSCFOW
    QMVHJOEJTQMBZ@OBNF+FOLJOT3CFOW1MVHJO
    QMVHJOWFSTJPO
    QMVHJOEFTDSJQUJPO50%0FOUFSEFTDSJQUJPO
    IFSF
    QMVHJOVSMIUUQTXJLJKFOLJOTDJPSH
    EJTQMBZ+&/,*/4+FOLJOT3CFOW1MVHJO
    QMVHJOEFWFMPQFE@CZTIJCBUBIJSPTIJ
    4)*#"5")JSPTIJTIJCBUBIJSPTIJ!HNBJMDPN
    QMVHJOVTFT@SFQPTJUPSZHJUIVCKFOLJOT
    SCFOWQMVHJO
    QMVHJOEFQFOET@POSVCZSVOUJNF
    FOE
    jenkins-rbenv.pluginspec

    View Slide

  34. +FOLJOT1MVHJO4QFDJpDBUJPOOFXEPcQMVHJOc
    QMVHJOOBNFKFOLJOTSCFOW
    QMVHJOEJTQMBZ@OBNF+FOLJOT3CFOW1MVHJO
    QMVHJOWFSTJPO
    QMVHJOEFTDSJQUJPO50%0FOUFSEFTDSJQUJPO
    IFSF
    QMVHJOVSMIUUQTXJLJKFOLJOTDJPSH
    EJTQMBZ+&/,*/4+FOLJOT3CFOW1MVHJO
    QMVHJOEFWFMPQFE@CZTIJCBUBIJSPTIJ
    4)*#"5")JSPTIJTIJCBUBIJSPTIJ!HNBJMDPN
    QMVHJOVTFT@SFQPTJUPSZHJUIVCKFOLJOT
    SCFOWQMVHJO
    QMVHJOEFQFOET@POSVCZSVOUJNF
    FOE
    jenkins-rbenv.pluginspec

    View Slide

  35. +FOLJOT1MVHJO4QFDJpDBUJPOOFXEPcQMVHJOc
    QMVHJOOBNFKFOLJOTSCFOW
    QMVHJOEJTQMBZ@OBNF+FOLJOT3CFOW1MVHJO
    QMVHJOWFSTJPO
    QMVHJOEFTDSJQUJPO50%0FOUFSEFTDSJQUJPO
    IFSF
    QMVHJOVSMIUUQTXJLJKFOLJOTDJPSH
    EJTQMBZ+&/,*/4+FOLJOT3CFOW1MVHJO
    QMVHJOEFWFMPQFE@CZTIJCBUBIJSPTIJ
    4)*#"5")JSPTIJTIJCBUBIJSPTIJ!HNBJMDPN
    QMVHJOVTFT@SFQPTJUPSZHJUIVCKFOLJOT
    SCFOWQMVHJO
    QMVHJOEFQFOET@POSVCZSVOUJNF
    FOE
    jenkins-rbenv.pluginspec

    View Slide

  36. +FOLJOT1MVHJO4QFDJpDBUJPOOFXEPcQMVHJOc
    QMVHJOOBNFKFOLJOTSCFOW
    QMVHJOEJTQMBZ@OBNF+FOLJOT3CFOW1MVHJO
    QMVHJOWFSTJPO
    QMVHJOEFTDSJQUJPO50%0FOUFSEFTDSJQUJPO
    IFSF
    QMVHJOVSMIUUQTXJLJKFOLJOTDJPSH
    EJTQMBZ+&/,*/4+FOLJOT3CFOW1MVHJO
    QMVHJOEFWFMPQFE@CZTIJCBUBIJSPTIJ
    4)*#"5")JSPTIJTIJCBUBIJSPTIJ!HNBJMDPN
    QMVHJOVTFT@SFQPTJUPSZHJUIVCKFOLJOT
    SCFOWQMVHJO
    QMVHJOEFQFOET@POSVCZSVOUJNF
    FOE
    jenkins-rbenv.pluginspec

    View Slide

  37. +FOLJOT1MVHJO4QFDJpDBUJPOOFXEPcQMVHJOc
    QMVHJOOBNFKFOLJOTSCFOW
    QMVHJOEJTQMBZ@OBNF+FOLJOT3CFOW1MVHJO
    QMVHJOWFSTJPO
    QMVHJOEFTDSJQUJPO50%0FOUFSEFTDSJQUJPO
    IFSF
    QMVHJOVSMIUUQTXJLJKFOLJOTDJPSH
    EJTQMBZ+&/,*/4+FOLJOT3CFOW1MVHJO
    QMVHJOEFWFMPQFE@CZTIJCBUBIJSPTIJ
    4)*#"5")JSPTIJTIJCBUBIJSPTIJ!HNBJMDPN
    QMVHJOVTFT@SFQPTJUPSZHJUIVCKFOLJOT
    SCFOWQMVHJO
    QMVHJOEFQFOET@POSVCZSVOUJNF
    FOE
    jenkins-rbenv.pluginspec

    View Slide

  38. +FOLJOT1MVHJO4QFDJpDBUJPOOFXEPcQMVHJOc
    QMVHJOOBNFKFOLJOTSCFOW
    QMVHJOEJTQMBZ@OBNF+FOLJOT3CFOW1MVHJO
    QMVHJOWFSTJPO
    QMVHJOEFTDSJQUJPO50%0FOUFSEFTDSJQUJPO
    IFSF
    QMVHJOVSMIUUQTXJLJKFOLJOTDJPSH
    EJTQMBZ+&/,*/4+FOLJOT3CFOW1MVHJO
    QMVHJOEFWFMPQFE@CZTIJCBUBIJSPTIJ
    4)*#"5")JSPTIJTIJCBUBIJSPTIJ!HNBJMDPN
    QMVHJOVTFT@SFQPTJUPSZHJUIVCKFOLJOT
    SCFOWQMVHJO
    QMVHJOEFQFOET@POSVCZSVOUJNF
    FOE
    jenkins-rbenv.pluginspec

    View Slide

  39. +FOLJOT1MVHJO4QFDJpDBUJPOOFXEPcQMVHJOc
    QMVHJOOBNFKFOLJOTSCFOW
    QMVHJOEJTQMBZ@OBNF+FOLJOT3CFOW1MVHJO
    QMVHJOWFSTJPO
    QMVHJOEFTDSJQUJPO50%0FOUFSEFTDSJQUJPO
    IFSF
    QMVHJOVSMIUUQTXJLJKFOLJOTDJPSH
    EJTQMBZ+&/,*/4+FOLJOT3CFOW1MVHJO
    QMVHJOEFWFMPQFE@CZTIJCBUBIJSPTIJ
    4)*#"5")JSPTIJTIJCBUBIJSPTIJ!HNBJMDPN
    QMVHJOVTFT@SFQPTJUPSZHJUIVCKFOLJOT
    SCFOWQMVHJO
    QMVHJOEFQFOET@POSVCZSVOUJNF
    FOE
    jenkins-rbenv.pluginspec

    View Slide

  40. +FOLJOT1MVHJO4QFDJpDBUJPOOFXEPcQMVHJOc
    QMVHJOOBNFKFOLJOTSCFOW
    QMVHJOEJTQMBZ@OBNF+FOLJOT3CFOW1MVHJO
    QMVHJOWFSTJPO
    QMVHJOEFTDSJQUJPO50%0FOUFSEFTDSJQUJPO
    IFSF
    QMVHJOVSMIUUQTXJLJKFOLJOTDJPSH
    EJTQMBZ+&/,*/4+FOLJOT3CFOW1MVHJO
    QMVHJOEFWFMPQFE@CZTIJCBUBIJSPTIJ
    4)*#"5")JSPTIJTIJCBUBIJSPTIJ!HNBJMDPN
    QMVHJOVTFT@SFQPTJUPSZHJUIVCKFOLJOT
    SCFOWQMVHJO
    QMVHJOEFQFOET@POSVCZSVOUJNF
    FOE
    jenkins-rbenv.pluginspec

    View Slide

  41. +FOLJOT1MVHJO4QFDJpDBUJPOOFXEPcQMVHJOc
    QMVHJOOBNFKFOLJOTSCFOW
    QMVHJOEJTQMBZ@OBNF+FOLJOT3CFOW1MVHJO
    QMVHJOWFSTJPO
    QMVHJOEFTDSJQUJPO50%0FOUFSEFTDSJQUJPO
    IFSF
    QMVHJOVSMIUUQTXJLJKFOLJOTDJPSH
    EJTQMBZ+&/,*/4+FOLJOT3CFOW1MVHJO
    QMVHJOEFWFMPQFE@CZTIJCBUBIJSPTIJ
    4)*#"5")JSPTIJTIJCBUBIJSPTIJ!HNBJMDPN
    QMVHJOVTFT@SFQPTJUPSZHJUIVCKFOLJOT
    SCFOWQMVHJO
    QMVHJOEFQFOET@POSVCZSVOUJNF
    FOE
    jenkins-rbenv.pluginspec

    View Slide

  42. KQJ
    HFOFSBUF

    View Slide

  43. "WBJMBCMF(FOFSBUPST
    QVCMJTIFS
    CVJMEFS
    XSBQQFS
    OPEF@QSPQFSUZ
    SVO@MJTUFOFS
    DPNQVUFS@MJTUFOFS

    View Slide

  44. 1.QVCMJTIFS
    3.XSBQQFS
    2.CVJMEFS
    ϏϧυޙʹԿ͔΍Δ
    Ϗϧυͱͯ͠Կ͔΍Δ
    ϏϧυલޙʹॲཧΛڬΉ

    View Slide

  45. 4.OPEF@QSPQFSUZ
    6.DPNQVUFS@MJTUFOFS
    5.SVO@MJTUFOFS
    jenkins ͷ node ઃఆ
    Ϗϧυͷ׬ྃΛड͚औͬ
    ͯԿ͔΍Δ
    εςʔλε͕มΘͬͨ࣌
    ʹԿ͔΍Δ

    View Slide

  46. XSBQQFS
    Λ࡞ͬͯΈΑ͏

    View Slide

  47. DESCFOW
    KQJHFOFSBUFXSBQQFS
    SCFOW
    DSFBUFNPEFMT
    SCFOW@XSBQQFSSC

    View Slide

  48. DMBTT3CFOW8SBQQFS
    +FOLJOT5BTLT#VJME8SBQQFS
    EJTQMBZ@OBNF3CFOWCVJMEXSBQQFS
    EFGJOJUJBMJ[F BUUST\^

    FOE
    EFGTFUVQ CVJME MBVODIFS MJTUFOFS

    FOE
    EFGUFBSEPXO CVJME MJTUFOFS

    FOE
    FOE
    rbenv_wrapper.rb

    View Slide

  49. DMBTT3CFOW8SBQQFS
    +FOLJOT5BTLT#VJME8SBQQFS
    EJTQMBZ@OBNF3CFOWCVJMEXSBQQFS
    EFGJOJUJBMJ[F BUUST\^

    FOE
    EFGTFUVQ CVJME MBVODIFS MJTUFOFS

    FOE
    EFGUFBSEPXO CVJME MJTUFOFS

    FOE
    FOE
    rbenv_wrapper.rb

    View Slide

  50. DMBTT3CFOW8SBQQFS
    +FOLJOT5BTLT#VJME8SBQQFS
    EJTQMBZ@OBNF3CFOWCVJMEXSBQQFS
    EFGJOJUJBMJ[F BUUST\^

    FOE
    EFGTFUVQ CVJME MBVODIFS MJTUFOFS

    FOE
    EFGUFBSEPXO CVJME MJTUFOFS

    FOE
    FOE
    rbenv_wrapper.rb

    View Slide

  51. DMBTT3CFOW8SBQQFS
    +FOLJOT5BTLT#VJME8SBQQFS
    EJTQMBZ@OBNF3CFOWCVJMEXSBQQFS
    EFGJOJUJBMJ[F BUUST\^

    FOE
    EFGTFUVQ CVJME MBVODIFS MJTUFOFS

    FOE
    EFGUFBSEPXO CVJME MJTUFOFS

    FOE
    FOE
    rbenv_wrapper.rb

    View Slide

  52. ઃఆը໘Λ
    ࢖͍͍ͨ

    View Slide

  53. View Slide

  54. NLEJSQWJFXTSCFOW@XSBQQFS
    UPVDIWJFXTSCFOW@XSBQQFS
    DPOpHFSC

    View Slide


  55. 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

    View Slide

  56. View Slide

  57. KFMMZUBHMJC

    View Slide

  58. DMBTT3CFOW8SBQQFS
    +FOLJOT5BTLT#VJME8SBQQFS
    EJTQMBZ@OBNF3CFOWCVJMEXSBQQFS
    EFGJOJUJBMJ[F BUUST\^

    FOE
    EFGTFUVQ CVJME MBVODIFS MJTUFOFS

    FOE
    EFGUFBSEPXO CVJME MJTUFOFS

    FOE
    FOE
    rbenv_wrapper.rb

    View Slide

  59. BUUS@BDDFTTPSWFSTJPO
    EFGJOJUJBMJ[F BUUST\^

    !WFSTJPO
    BUUST<WFSTJPO>
    FOE
    rbenv_wrapper.rb

    View Slide

  60. DMBTT3CFOW8SBQQFS
    +FOLJOT5BTLT#VJME8SBQQFS
    EJTQMBZ@OBNF3CFOWCVJMEXSBQQFS
    EFGJOJUJBMJ[F BUUST\^

    FOE
    EFGTFUVQ CVJME MBVODIFS MJTUFOFS

    FOE
    EFGUFBSEPXO CVJME MJTUFOFS

    FOE
    FOE
    rbenv_wrapper.rb

    View Slide

  61. 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

    View Slide

  62. 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

    View Slide

  63. 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

    View Slide

  64. 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

    View Slide

  65. KQJ
    CVJME

    View Slide

  66. 1.QMVHJOTQFD͔Β
    QPNYNMΛੜ੒
    2.IQJϑΝΠϧΛੜ

    View Slide

  67. KQJ
    TFSWFS

    View Slide

  68. QMVHJOΛ
    ಡΈࠐΜͩ
    +FOLJOT
    Λىಈ͢Δ

    View Slide

  69. खಈςετ

    View Slide

  70. KQJ
    SFMFBTF

    View Slide

  71. 1.KFOLJOTDJPSHʹΞο
    ϓϩʔυ͢Δ
    3.Ҿ਺ແ͠͸TOBQTIPU
    SFMFBTFΛ෇͚Δͱ
    QSPEVDUJPO
    2.dKFOLJOTDJPSHͷ
    ΞΧ΢ϯτ৘ใΛ࢖༻

    View Slide

  72. ͦͷଞ

    View Slide

  73. UFTUVOJU
    PS
    STQFD
    ςετ

    View Slide

  74. ࢖͑ͳ͍ͷͰ
    +BWBϥΠϒϥϦ
    ͰؤுΔ
    rubygems

    View Slide

  75. etc
    https://github.com/jenkinsci/rvm-plugin
    https://github.com/hsbt/jenkins-rbenv-plugin
    https://github.com/takai/jenkins-hipchat-publisher-plugin

    View Slide

  76. 8SJUFZPVSQMVHJO

    View Slide