GitHub と Travis CI で WordPress テーマをテスト、ビルド、そして自動化

GitHub と Travis CI で WordPress テーマをテスト、ビルド、そして自動化

WordCamp Kansai 2016 のセッション「WordPress テーマの継続的インテグレーション」の登壇資料です。
CI = Continuous Integration ( 継続的インテグレーション ) の入門的な位置づけとして自作の WordPress テーマで試した事例などを紹介しています。

6e6c7132d99fd8febb2193fd21809d20?s=128

Megumi Hano

July 10, 2016
Tweet

Transcript

  1. (JU)VCͱ5SBWJT$*Ͱ 8PSE1SFTTςʔϚΛ ςετɺϏϧυɺͦͯࣗ͠ಈԽ 8PSE$BNQ,BOTBJ Ӌ໺Ί͙Έ

  2. ࣗݾ঺հ@ Ӌ໺Ί͙Έ!GFBUIFSQMBJO

  3. ͭͬͨ͘΋ͷ ࣗݾ঺հ@

  4. ࣗݾ঺հ"NFUIZTU@

  5. ࣗݾ঺հ"NFUIZTU@ ࡢ೥݄ʹެ։ 8PSE1SFTTPSH ެࣜσΟϨΫτϦܝࡌςʔϚ "NFUIZTU

  6. ࣗݾ঺հ"NFUIZTU@ ͸͡Ίͯࣗ෼Ͱͭͬͨ͘ςʔϚ @T ςʔϚͷͻͳܗ Λϕʔεʹ࡞੒ 'PVOEBUJPOͷάϦουγεςϜ 4BTTͷιʔεϑΝΠϧಉࠝ 'POU"XFTPNF(FOFSJDPOT

  7. ͜ͷ"NFUIZTUΛࣄྫʹɺ 8PSE1SFTTςʔϚͷ ςετʹ͍͓ͭͯ࿩͠·͢

  8. Ωʔϫʔυ͸ͭ@ (JU)VCͱ5SBWJT$*Ͱ 8PSE1SFTTςʔϚΛ ςετɺϏϧυɺͦͯࣗ͠ಈԽ $*ɾςετɾࣗಈԽ

  9. ͓͠ͳ͕͖@ ࣗ࡞ͷςʔϚ"NFUIZTUΛྫʹɺ ܧଓతΠϯςάϨʔγϣϯʹ͍͓ͭͯ࿩͠·͢  ͖͔͚ͬ  $*ͱ͸  ͳͥ΍Δͷ͔ 

    Ͳ͏΍ͬͯ΍Δͷ͔ ⁃ ςετ঺հฤ ⁃ $*࣮ߦɾӡ༻ฤ  ·ͱΊ ऴΘΓʹ
  10.  ͖͔͚ͬ ಋೖ 5SBWJT$*ͰϏϧυ

  11. IUUQTpSFHPCZKQBSDIJWFT ͋Δ೔λΠϜϥΠϯͰ@

  12. 8PSE1SFTTͷςʔϚΛ 5SBWJT$*ͰϏϧυ͢Δɻ ͱ͍͏هࣄ ʜ5SBWJT$*

  13. 5SBWJT$*@ IUUQTUSBWJTDJPSH

  14. 5SBWJT$*@ (JU)VC্ͷϦϙδτϦͱ ࿈ܞͯ͠Կ͔Λ͢ΔαʔϏε ͱΓ͋͑ͣࠓ͸͜ΕͰ0,

  15. هࣄʹ໭Δ

  16. هࣄͷ಺༰@ HVMQͰςʔϚΛ։ൃ͢Δͷ͕౰ͨΓલ ຊ൪ϦϦʔε΍഑෍ʹ͸ෆཁͳϑΝΠϧ Ϗϧυ࡞ۀ͕ඞཁ 5SBWJT$*ͰࣗಈͰϏϧυ

  17. ΍ͬͯΈͨ@ NBTUFSʹQVTI͢ΔͱϏϧυ͕ൃՐ Ϗϧυͨ͠ςʔϚ͔Β͸ෆཁϑΝΠϧ Λ࡟আ Ϗϧυͨ͠ςʔϚ͸ผϒϥϯνʹQVTI

  18. Ͱ͖ͨ ຬ଍ͯ͠ ͠͹Β͘ ͦͷ··

  19. ΍ͬͯΈ·͢ ݱঢ়͸ςʔϚΛϏϧυ͍ͯ͠Δ͕ɺ$*ͱ͸ݴ͑ͳ͍ ςετͷࣗಈԽ΋૊ΈࠐΜͰΈͨΒ

  20. $*ͬͯͳΜͩΖ͏ ຊ୊΁

  21.  $*ͱ͸ ͔͜͜Β ຊ୊

  22. $*ͱ͸@ ܧଓతΠϯςάϨʔγϣϯ $POUJOVPVT*OUFHSBUJPO

  23. $*ͱ͸@ ओʹϓϩάϥϚʔͷΞϓϦέʔγϣϯ࡞੒࣌ͷ ඼࣭վળ΍ೲظͷ୹ॖͷͨΊͷश׳ͷ͜ͱͰ͋Δɻ ΤΫετϦʔϜɾϓϩάϥϛϯά 91 ͷϓϥΫς ΟεͷҰͭͰɺڱٛʹ͸Ϗϧυ΍ςετɺΠϯεϖ ΫγϣϯͳͲΛܧଓతʹ࣮ߦ͍ͯ͘͜͠ͱΛҙຯ͢ Δ<>ɻಛʹɺ೥୅ޙ൒Ҏ߱ͷ։ൃʹ͓͍ͯ ͸ɺܧଓతΠϯςάϨʔγϣϯΛαϙʔτ͢Διϑ

    τ΢ΣΞΛ࢖༻͢Δ܏޲͕ڧ·͖ͬͯͨɻ ܧଓతΠϯςάϨʔγϣϯ8JLJQFEJB UUQTKBXJLJQFEJBPSHXJLJ&#&#"&"&"&#&&#&"$& #$&#&"&#
  24. $*ͱ͸@ श׳ ௕͍ؒ܁Γฦͯ͠ɺܾ·ΓͷΑ͏ʹͳͬͨϞϊɾίτ΍ɺ ਓʑͷ͍͋ͩͰී௨ʹߦΘΕΔ෺ࣄͷ΍Γํ

  25. ඼࣭վળ΍ೲظͷ୹ॖͷͨΊʹɺ Կ͔Λश׳Խ͓ͯ͜͠ͳ͏ Ϗϧυ΍ςετɺݕূ $*ͱ͸@ $*͸ٕज़Ͱ͸ͳ͍

  26.  ͳͥ΍Δͷ͔

  27. Ϗϧυ ඼࣭อ࣋ ਓ

  28. ඼࣭อ࣋@ wಈ࡞อূ wৗʹΞοϓσʔτ w௥Ճ͞ΕΔػೳ wόά

  29. ඼࣭อ࣋@

  30. ඼࣭อ࣋@

  31. ਓ@ w ༷ʑͳਓ͔ΒૹΒΕͯ͘Δ13 wίʔυͷΫη wϨϏϡʔͷखؒ wݟམͱ͠

  32. ਓ@

  33. ਓ@ ༨ஊ ެࣜσΟϨΫτϦʹ ొ࿥͢Δʹ͸ɺ ϨϏϡϫʔͷ νΣοΫʹ௨Δඞཁ

  34. Ϗϧυ@ w HVMQ΍HSVOUͰ։ൃ w ίϯύΠϧ͞ΕΔ4BTT΍+4ϑΝΠϧ w ΋Ζ΋ΖͷઃఆϑΝΠϧ܈ ຊ൪؀ڥͰͷϦϦʔε࣌΍ɺ഑෍ ެࣜςʔϚʹ͸ෆཁͳ ϑΝΠϧɾσΟϨΫτϦ͕େྔੜ੒

  35. Ϗϧυ ඼࣭อ࣋ ਓ ίʔυͷςετΛ͠ɺ඼࣭Λ୲อ͢Δ ͦΕΛܧଓԽɾࣗಈԽ͓ͯ͜͠ͳ͏

  36. ςετ঺հฤ  Ͳ͏΍ͬͯ΍Δͷ͔

  37. $*ͷେ·͔ͳྲྀΕ@ ίʔυͷݕূɾಈ࡞νΣοΫ 13 ςετ Ϛʔδ Ϗϧυ ඞཁͳϑΝΠϧ͚ͩ

  38. $*ͷେ·͔ͳྲྀΕ@ 13 ςετ Ϛʔδ Ϗϧυ Կ͢Δͷʁ

  39. 8PSE1SFTTͷίʔσΟϯάن໿ʹ Ԋ͍ͬͯΔ͔ςετ     ςετ@ 1)1ͷ੩తղੳ ະఆٛͷม਺ɺ࢖༻͞Εͯͳ͍ม਺ɺؔ਺Λݕग़ 4BTT

    TDTTϑΝΠϧ ͷจ๏νΣοΫ +4ͷจ๏νΣοΫ ಋೖ͕؆୯ͳ ςετΛ ঺հ͠·͢
  40. 1)1$PEF4OJGGFS 1)1$4 @ 8PSE1SFTTͷίʔσΟϯάن໿ʹ Ԋ͍ͬͯΔ͔ςετ     1)1ͷ੩తղੳ

    ະఆٛͷม਺ɺ࢖༻͞Εͯͳ͍ม਺ɺؔ਺Λݕग़ 4BTT TDTTϑΝΠϧ ͷจ๏νΣοΫ +4ͷจ๏νΣοΫ
  41. IUUQTHJUIVCDPNTRVJ[MBCT1)1@$PEF4OJGGFS 1)1$PEF4OJGGFS 1)1$4 @

  42. 1)1$4@ ࢦఆͨ͠ίʔσΟϯάن໿ 4UBOEBSET ʹ ४ڌ͍ͯ͠Δ͔Ͳ͏͔νΣοΫ͢Δπʔϧ छྨͷεΫϦϓτ QIQDTن໿ʹ४ڌ͍ͯ͠Δ͔൑ఆ QIQDCGίʔσΟϯάελΠϧΛ੔ܗ

  43. 1)1$4@ ϑϨʔϜϫʔΫ͝ͱʹϧʔϧηοτΛ ઃఆͯ͠࢖͏ $BLF1)1 'VFM1)1 ͳͲ

  44. 1)1$4@ ઃఆϑΝΠϧ͸YNM ઃఆ͍ͨ͠ن໿ɺ ϓϩδΣΫτʹ͸ඞཁͳ͍ɺ আ֎͍ͨ͠ϧʔϧ ͳͲΛهड़ͯ͠ΧελϚΠζ 8PSE1SFTTͷ ৔߹͸ Ͳ͏͢Δͷ

  45. 8PSE1SFTT$PEJOH4UBOEBSET@ IUUQTNBLFXPSEQSFTTPSHDPSFIBOECPPLCFTUQSBDUJDFTDPEJOHTUBOEBSET 1)1 )5.- $44 +BWB4DSJQU

  46. (JU)VCʹ ϦϙδτϦ͕ ͋Δ IUUQTHJUIVCDPN8PSE1SFTT$PEJOH4UBOEBSET8PSE1SFTT$PEJOH4UBOEBSET 8PSE1SFTT$PEJOH4UBOEBSET@

  47. 8PSE1SFTT$PEJOH4UBOEBSET@ 8PSE1SFTT$PSFओཁͳϧʔϧηοτ 8PSE1SFTT&YUSBϕετϓϥΫςΟε 8PSE1SFTT%PDTΠϯϥΠϯυΩϡϝϯτͷ ௥Ճϧʔϧηοτ 8PSE1SFTT7*18PSE1SFTTDPNͷ 7*1༻ͷ֦ுϧʔϧηοτ 8PSE1SFTTશ෦ೖΓ

  48. 1)1$4@

  49. 1)1$4@ IFBEFSQIQͰΤϥʔ εΫϦϓτ͸ FORVFVFͯ͠Ͷ

  50. GVODUJPOTQIQͰ FORVFVF͢Δ 1)1$4@ IFBEFSQIQͰΤϥʔ

  51. 1)1$4@ DPOUFOUTFBSDIQIQ Τεέʔϓ ͯ͠Ͷ $PEFYͷ %BUB7BMJEBUJPO ΛݟͯͶ

  52. 1)1$4@ DPOUFOUTFBSDIQIQ FTD@IUNM Λ ࢖͏Α͏ʹ͢Δ

  53. 1)1$4@ ίϝϯτ େจࣈͰॳΊͯɺ۟ಡ఺ͰऴΘΔΑ͏ʹ͢Δ 3FRVJSFNFOUͰ͸ͳ͍͕ɺରԠ͢Δͷ͕ϕετɾϓϥΫςΟε

  54. 1)1.FTT%JUFDUPS 1)1.% @ 8PSE1SFTTͷίʔσΟϯάن໿ʹ Ԋ͍ͬͯΔ͔ςετ     1)1ͷ੩తղੳ

    ະఆٛͷม਺ɺ࢖༻͞Εͯͳ͍ม਺ɺؔ਺Λݕग़ 4BTT TDTTϑΝΠϧ ͷจ๏νΣοΫ +4ͷจ๏νΣοΫ
  55. 1)1.%@ IUUQTQIQNEPSH

  56. 1)1.%@ ϧʔϧηοτ͸छྨ $MFBO$PEF͖Ε͍ͳίʔυ͔Ͳ͏͔ $POUSPWFSTJBM໋໊نଇ %FTJHOઃܭ্ͷ໰୊ /BNJOH௕ա͗Δ୹͗͢Δม਺ 6OVTFEDPEF࢖ΘΕ͍ͯͳ͍ίʔυ $PEFTJ[Fίʔυͷෳࡶ͞

  57. 1)1.%@ ࢖͍ͬͯͳ͍ ύϥϝʔλ

  58. 1)1.%@ ඞཁͳ͍ FMTF

  59. 1)1.%@ DBNFM$BTF Ͱͳ͍ ม਺໊

  60. 1)1.%@ ඞཁͳ͍ϧʔϧηοτ΋͋Δ 8PSE1SFTTDPEJOH4UBOEBSETͰ ਪ঑͞Ε͍ͯΔ໋໊نଇ͸MPXFSDBTF GVODUJPOTPNF@OBNF TPNF@WBS \^ GVODUJPOTPNF@OBNF TPNF7BS \^

  61. TDTTMJOUTBTTMJOU@ 8PSE1SFTTͷίʔσΟϯάن໿ʹ Ԋ͍ͬͯΔ͔ςετ     1)1ͷ੩తղੳ ະఆٛͷม਺ɺ࢖༻͞Εͯͳ͍ม਺ɺؔ਺Λݕग़ 4BTT

    TDTTϑΝΠϧ ͷจ๏νΣοΫ +4ͷจ๏νΣοΫ
  62. TDTTMJOUTBTTMJOU@ 4BTTͷίʔσΟϯάελΠϧͷ νΣοΫΛߦ͏ ઃఆϑΝΠϧ͸ZNM TDTTMJOU3VCZ͕ඞཁ HFNJOTUBMM·ͨ͸CVOEMFJOTUBMM TBTTMJOUOQNJOTUBMM

  63. JEΛ࢖Θͤͳ͍ JNQPSUBOUΛ࢖Θͤͳ͍ ΫΦʔτͷઃఆ ໋໊نଇ ͳͲ৭ʑͳઃఆ͕Ͱ͖Δ TDTTMJOUTBTTMJOU@

  64. TDTTMJOUTBTTMJOU@ ݅ͷ ܯࠂ

  65. TDTTMJOUTBTTMJOU@ ͦͷ··࢖͏ͱɺ਺ඦ݅ϨϕϧͰΤϥʔ طଘͷ΋ͷʹಋೖ͢Δͱ͖͸ɺ ج४ΛΏΔͯ͘͠ɺঃʑʹϧʔϧΛ੔͍͑ͯ͘ ϓϩδΣΫτʹෆཁͳϧʔϧ΋͋ΔͷͰɺ ΧελϚΠζ͸ඞਢ

  66. +4)JOU@ 8PSE1SFTTͷίʔσΟϯάن໿ʹ Ԋ͍ͬͯΔ͔ςετ     1)1ͷ੩తղੳ ະఆٛͷม਺ɺ࢖༻͞Εͯͳ͍ม਺ɺؔ਺Λݕग़ 4BTT

    TDTTϑΝΠϧ ͷจ๏νΣοΫ +4ͷจ๏νΣοΫ
  67. +4)JOU@ IUUQTHJUIVCDPNKTIJOUKTIJOU

  68. +4)JOU@ +BWB4DSJQUίʔυͷ੩తղੳ ઃఆϑΝΠϧ͸KTIJOUSD KTPOܗࣜͰهड़͢Δ

  69. +4)JOU@ αϯϓϧςετWBSΛ͚ͭͳ͍

  70. +4)JOU@ ݁ՌΛΈͯΈΔ VOEFpOFE

  71. +4)JOU@ WBSΛ͚ͭΔ Կ΋ݴΘΕͳ͘ͳͬͨ

  72. ·ͱΊ@ ϝϦοτ ίʔσΟϯάελΠϧ͕ҰఆʹอͨΕΔ Ұ౓ಋೖͯ͠͠·͑͹ػց͕΍ͬͯ͘ΕΔͷͰָ ઃఆϑΝΠϧ͕ίʔσΟϯάϧʔϧͷ୅ΘΓʹͳΓɺ HJUͰ؅ཧͰ͖Δ

  73. ·ͱΊ@ ςετ͸ͦͷ··Ͱ͸ͳ͘ɺ ϓϩδΣΫτʹ͋ͬͨϧʔϧηοτΛద༻͢Δ ͦͷͨΊʹ͸ɺެࣜυΩϡϝϯτΛಡΜͰ ςʔϚͷઃܭͱরΒ͠߹ΘͤΔඞཁ 1)1.%͸1)1ࣗମͷղੳͳͷͰɺ ςʔϚͷ࡞ΓํʹΑͬͯద༻͢Δϧʔϧ͸มΘΔ ஫ҙ఺

  74.  Ͳ͏΍ͬͯ΍Δͷ͔ $*࣮ߦɾӡ༻ฤ

  75. ςʔϚͰͷ$*ͷେ·͔ͳྲྀΕ@ 13 ςετ Ϛʔδ Ϗϧυ ͜ͷҰ࿈ͷྲྀΕΛܧଓత͔ͭࣗಈԽ͢Δʹ͸ ख࡞ۀͰ΍Δͷ͸େมʜ

  76. 5SBWJT$*@ 5SBWJT$*͸ɺ $*ͷ ࢧԉαʔϏε IUUQTUSBWJTDJPSH

  77. 5SBWJT$*@ (JU)VC্ͷϦϙδτϦͱ࿈ܞͯ͠ $*Λ͓͜ͳ͏͜ͱ͕Ͱ͖ΔαʔϏε (JUͷίϛοτΛ؂ࢹͯ͠ ༷ʑͳςετ΍ϏϧυΛ࣮ߦͯ͘͠ΕΔ ઃఆϑΝΠϧ͸USBWJTZNM

  78. 5SBWJT$*@ ݴޠ όʔδϣϯ ϒϥϯν ςετͷηοτΞοϓ ςετ࣮ߦͷ εΫϦϓτͳͲ

  79. 5SBWJT$*@ 13ΛૹΔͱ ࣗಈͰ ςετ͕૸Δ ˞QVTIͰ΋0,

  80. IUUQTUSBWJTDJPSH8PSE1SFTTUXFOUZTJYUFFOCVJMET 5SBWJT$*5XFOUZTJYUFFO@

  81. 5SBWJT$*'PVOEBUJPO@ IUUQTUSBWJTDJPSH[VSCGPVOEBUJPOTJUFTCVJMET

  82. 5SBWJT$*#PPUTUSBQ@ IUUQTUSBWJTDJPSHUXCTCPPUTUSBQ

  83. IUUQTUSBWJTDJPSHHVMQKTHVMQ 5SBWJT$*HVMQ@

  84. KPC͝ͱʹ ϩά͕͢΂ͯݟΒΕΔ 5SBWJT$*HVMQ@ IUUQTUSBWJTDJPSHHVMQKTHVMQKPCT

  85. 13 ςετ Ϛʔδ Ϗϧυ ۩ମతͳྲྀΕΛ঺հ͠·͢ 5SBWJT$*ςʔϚ@

  86. EFWFMPQ 13 5SBWJT$* ʹΑΔ ςετ࣮ߦ

  87. EFWFMPQ NBTUFS 13 ։ൃ׬ྃ Ϛʔδ 5SBWJT$* ʹΑΔ ςετ࣮ߦ

  88. EFWFMPQ NBTUFS SFMFBTF 13 5SBWJT$* ʹΑΔ Ϗϧυ࣮ߦ ։ൃ׬ྃ Ϛʔδ 5SBWJT$*

    ʹΑΔ ςετ࣮ߦ
  89. EFWFMPQ NBTUFS SFMFBTF ϦϦʔε 13 5SBWJT$* ʹΑΔ Ϗϧυ࣮ߦ ։ൃ׬ྃ Ϛʔδ

    ඞཁϑΝΠϧΛ σϞαΠτʹ ࣗಈσϓϩΠ ˞σϓϩΠαʔϏεΛ ར༻ 5SBWJT$* ʹΑΔ ςετ࣮ߦ
  90. EFWFMPQ NBTUFS 13 ։ൃ ˣ ςετ ։ൃϑϩʔͷ Ұ෦ श׳Խ

  91. 5SBWJT$*ςʔϚ@ EFWFMPQʹ13͕དྷͨΒςετ࣮ߦ ςετ 1)1$4 81$PEJOH4UBOEBSET 1)1.% 4BTT-JOU NBTUFSʹQVTI͞ΕͨΒϏϧυΛ࣮ߦ SFMFBTFϒϥϯνʹQVTI

  92. ֤ςετͷ ηοτΞοϓ Λ͢Δ 5SBWJT$*ςʔϚ@

  93. 5SBWJT$*ςʔϚ@ ςετ࣮ߦ

  94. 5SBWJT$*ςʔϚ@ Ϗϧυ༻ͷ εΫϦϓτ

  95. 5SBWJT$*ςʔϚ@ ࠓ೔͸͜͜·Ͱ

  96.  ·ͱΊ

  97. $*ͱ͸@ ίʔυͷ඼࣭Λอͪɺೲظ୹ॖͷͨΊͷश׳ 8PSE1SFTTͷίʔσΟϯάن໿ʹԊͬͨɺ ҆શͰՄಡੑͷߴ͍ςʔϚͰ ͋Γଓ͚ΔͨΊͷश׳ ίʔυ͸ಈ͔͢ ͚ͩ͡Όͳ͘ɺ ಡΉ΋ͷͰ΋͋Δ ࣗಈԽେࣄ

  98. $*ͱ͸@ $*͸༷ʑͳϓϩδΣΫτͰߦΘΕ͍ͯΔ 8PSE1SFTT͡Όͳͯ͘΋ɺ ௕ظϝϯς͕ඞཁͳ΋ͷ΍ɺ ΦʔϓϯιʔεϓϩδΣΫτʹ͸ ͥͻऔΓೖΕͯΈͯ

  99. ͳͥ΍Δͷ͔@ Ϗϧυ ඼࣭อ࣋ ਓ

  100. ςετ@ 1)1$4Y8PSE1SFTT$PEJOH4UBOEBSET ࡉ͔͍ͱࢥ͏ϧʔϧηοτ΋ ͋Δ͔΋͠Εͳ͍ 8PSE1SFTT7*1Ҏ֎͸ ద༻ͤ͞Δͷ͕ϕετ ༗ঈςʔϚ͸7*1΋ద༻ͤ͞Δͱɺ ίʔυͷ඼࣭໘Ͱͷ৴པੑ͕61

  101. ςετ@ 1)1.% ςʔϚͷઃܭ΍GVODUJPOTͷॻ͖ํ࣍ୈͰɺ ඞཁͳϧʔϧηοτ͸มΘͬͯ͘Δ 1)1ࣗମͷ੩తղੳΛ͢Δ ެࣜυΩϡϝϯτಡΈ·͠ΐ͏

  102. 5SBWJT$*@ ศར ͜Ε͚ͩ

  103.  ͍͞͝ʹ

  104. ۩ମతͳίʔυ͕ ஌Γ͍ͨͰ͔͢

  105. ιʔε͸ (JU)VCʹ ͋Γ·͢ GFBUIFSQMBJOBNFUIZTU

  106. 5IBOLZPV

  107. None