Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Codeシリーズで始めるはじめてのCI/CD

F9ace682a6b4ff7b2eef422f21ace8a4?s=47 kazue
September 18, 2019

 Codeシリーズで始めるはじめてのCI/CD

HIGOBASHI.AWS 第11回(https://classmethod.connpass.com/event/145477/) で登壇した際の資料です。詳細はブログにまとめていますのでそちらをご覧ください。
https://dev.classmethod.jp/cloud/aws/cicd-with-code-series-at-higobashi-aws/

F9ace682a6b4ff7b2eef422f21ace8a4?s=128

kazue

September 18, 2019
Tweet

More Decks by kazue

Other Decks in Programming

Transcript

  1. $PEFγϦʔζͰ࢝ΊΔ͸͡Ίͯͷ$*$% "84ࣄۀຊ෦ίϯαϧςΟϯά෦ ਺ࢬਖ਼थ

  2. ࣗݾ঺հ   ͔ͣ͑ • AWSࣄۀຊ෦ ίϯαϧςΟϯά෦ • େࡕΦϑΟεۈ຿ •

    2019೥1݄JOIN • ৬ྺ • WEBίϯαϧʢडୗ։ൃʣ8೥ • ࣗࣾαʔϏε։ൃӡ༻อक 2೥ • ޷͖ͳAWSαʔϏε • Terraform
  3. IJHPCBTIJBXT

  4. ͜ͷηογϣϯͷΰʔϧ   ର৅ऀ $*$%PS$PEFγϦʔζ
 Α͘஌Βͳ͍ ΰʔϧ $PEFγϦʔζศརʂ
 ࢖ͬͯΈΑ͏ʂ

  5. ͜ͷηογϣϯͰ΍Δ͜ͱ   ͱ͋Δ։ൃ؀ڥʹCodeγϦʔζΛಋೖͯ͠ΑΓศརʹ

  6. ΋͘͡   • ༻ޠͷ੔ཧ • ࠓճѻ͏ʮͱ͋Δ؀ڥʯͷ঺հ • εςοϓ1ɿσϓϩΠ࡞ۀΛ؆୯ʹ͠Α͏ •

    εςοϓ2ɿ֤؀ڥ΁ͷσϓϩΠΛҰຊԽ͠Α͏ • εςοϓ3ɿGitϦϙδτϦ͔Β௚઀σϓϩΠ͠Α͏ • εςοϓ4ɿςετΛࣗಈ࣮ߦ͠Α͏ • ·ͱΊ
  7.   $*$%ͬͯԿʁ

  8. $*$%ͬͯԿʁ   ίʔυ Ϗϧυ ςετ σϓϩΠ ϦϦʔε·Ͱͷ࡞ۀΛ ࣗಈԽɺলྗԽ͢ΔࢼΈͷ͜ͱ

  9.   ͳΜͰ$*$%͕ඞཁͳͷʁ

  10. ͳΜͰ$*$%͕ඞཁͳͷʁ   ٻΊΒΕΔεϐʔυϨϕϧ্͕͕͍ͬͯΔ͔Β

  11.   ະϦϦʔε=ࡏݿ

  12.   $PEFγϦʔζͬͯԿʁ

  13. $PEFγϦʔζͬͯԿʁ   $*$%Λ࣮ݱ͢Δͷʹ໾ཱͭ"84ͷαʔϏε܈ͷ૯শ CodeCommit CodeBuild CodePipeline CodeDeploy CodeStar

  14.   ࠓճѻ͏؀ڥ

  15. ͱ͋Δ؀ڥ   • Laravel੡ΞϓϦ • ALB+EC2Ұ୆ • Ϩϯλϧαʔόʔ
 ʹGitϦϙδτϦ

    • SFTPͰϑΝΠϧ
 ΞοϓϩʔυͰ
 σϓϩΠ • ςετίʔυʁ
  16.   εςοϓɿσϓϩΠ࡞ۀΛ؆୯ʹ͠Α͏

  17. ঢ়گΠϯελϯεΛ૿΍͢͜ͱʹͳΓ·ͨ͠   ΊΜͲ͍

  18.   $PEF%FQMPZ

  19. $PEF%FQMPZ   • σϓϩΠΛָʹ͢ΔαʔϏε • ZipԽͨ͠ιʔείʔυor
 GitHub্ͷιʔείʔυ
 ˣ
 ࢦఆͷEC2Πϯελϯε্ͳͲ


    ʹ؆୯ʹσϓϩΠ
  20. $PEF%FQMPZͷ࢓૊Έ   • σϓϩΠઌͷΠϯελϯεʹ
 AgentΛৗற • CodeDeployʹରͯ͠
 ϙʔϦϯά •

    ϓϩάϥϜߋ৽Λݕ஌ͨ͠Β
 औಘͯ͠഑ஔ
 ʴ ৭ʑͳλΠϛϯάͰ
 εΫϦϓτ΋࣮ߦՄೳ
  21. $PEF%FQMPZͷઃఆ   • σϓϩΠάϧʔϓ • σϓϩΠઌEC2Πϯελϯε • ιʔείʔυ

  22. $PEF%FQMPZͷઃఆᶃσϓϩΠάϧʔϓ   σϓϩΠର৅ͷΠϯελϯεΛࢦఆ͢Δ λάͰର৅Λࢦఆ

  23. $PEF%FQMPZͷઃఆᶄσϓϩΠઌͷ&$   • AgentΠϯετʔϧ • HTTPSΞ΢τό΢ϯυΞΫηε • λάΛઃఆ •

    S3ΞΫηεݖݶ
  24. $PEF%FQMPZͷઃఆᶅιʔείʔυ   appspec.yml ϧʔτσΟϨΫτϦʹஔ͘ ιʔείʔυ಺ͷ৔ॴ Πϯελϯε಺ͷ৔ॴ ιʔείʔυ಺ʹ
 εΫϦϓτΛؚΊΔ εΫϦϓτ࣮ߦλΠϛϯά

  25. $PEF%FQMPZͷσϓϩΠ࡞ۀ   ZIPϑΝΠϧԽ S3όέοτ
 Ξοϓϩʔυ

  26. ঢ়گվળσϓϩΠ࡞ۀ͕؆୯ʹͳΓ·ͨ͠   Πϯελϯε͕
 Կ୆૿͑ͯ΋ɺ
 ΤϯδχΞͷ
 ࡞ۀྔ͸ಉ͡

  27.   εςοϓ֤؀ڥ΁ͷσϓϩΠΛҰຊԽ͠Α͏

  28. ঢ়گʮ4UHͱຊ൪؀ڥͦΕͧΕʹ$PEF%FQMPZ࢖͏ͷΊΜͲ͍Θʯ   Stg؀ڥ ຊ൪؀ڥ

  29.   $PEF1JQFMJOF

  30. $PEF1JQFMJOF   • ֤αʔϏεΛ࿈ܞͤͯ͞CI/CDͷ
 ύΠϓϥΠϯΛ࡞ΔαʔϏε • AWSͷαʔϏεҎ֎΋࿈ܞՄೳ • ϑϩʔͷਐḿΛՄࢹԽ

  31. $PEF1JQFMJOFͷ֓೦ͱ࢓૊Έ   ※ਤ͸ʮCodePipelineϢʔβʔΨΠυ CodePipelineͷ֓೦ʯΑΓసࡌ
 (https://docs.aws.amazon.com/ja_jp/codepipeline/latest/userguide/concepts.html#concepts-how-it-works) • ύΠϓϥΠϯ • εςʔδ

    • τϥϯδγϣϯ • ΞΫγϣϯ • ΞʔςΟϑΝΫτ
  32. ࠓճ࡞੒͢ΔύΠϓϥΠϯ  

  33. ঢ়گվળσϓϩΠ࡞ۀ͕͞Βʹ؆୯ʹͳΓ·ͨ͠   • Stgͱຊ൪؀ڥͷσϓϩΠΛҰͭͷྲྀΕʹ
 ·ͱΊΔ͜ͱ͕Ͱ͖ͨ • CodeDeployίϯιʔϧͰͷσϓϩΠ࡞ۀ΋ෆཁʹʢS3ʹΞοϓ ͨ͠Βࣗಈ։࢝)
 


    
 
 • Ͳͷεςοϓ·Ͱਐߦ͍ͯ͠Δͷ͔΋Θ͔Δ • ཤྺ΋ࢀরՄೳ
  34.   εςοϓɿ(JUϦϙδτϦ͔Β௚઀σϓϩΠ͠Α͏

  35. ঢ়گʮຖճ[JQϑΝΠϧ࡞ͬͯ4ʹ্͛Δͷ΋ΊΜͲ͍͘͞Θʯ   ZIPϑΝΠϧԽ S3όέοτ
 Ξοϓϩʔυ ύΠϓϥΠϯ
 ελʔτ

  36.   $PEF$PNNJU͔(JU)VCΛ࢖͓͏

  37.  

  38.   $PEF$PNNJU

  39. $PEF$PNNJU   • GitϦϙδτϦͷϚωʔδυ αʔϏε
 =Πϯϑϥ؅ཧෆཁ • IAMϢʔβʔͰೝূೝՄͰ͖Δ

  40. $PEF$PNNJU࢖͍ํ   • ϦϙδτϦ࡞੒ • ίʔυϓογϡ • ύΠϓϥΠϯͷSource
 εςʔδΛमਖ਼

    → • appspec.yml͔Β࣮ߦ͞ΕΔ
 εΫϦϓτ΋ཁमਖ਼
  41. BQQTQFDZNM͔Β࣮ߦ͞ΕΔεΫϦϓτͷमਖ਼   w (JUϦϙδτϦ಺
 ͷίʔυ w ֎෦ϥΠϒϥϦ w (JUϦϙδτϦ಺


    ͷίʔυ w ֎෦ϥΠϒϥϦ εΫϦϓτ಺Ͱ
 ֎෦ϥΠϒϥϦΛ
 μ΢ϯϩʔυ σϓϩΠ σϓϩΠ
  42. ঢ়گվળϦϞʔτϒϥϯνʹมߋՃ͑Δ͚ͩͰॲཧ։࢝   • GitϦϙδτϦͷαʔόʔ؅ཧ͕ෆཁʹ • ύΠϓϥΠϯͰιʔείʔυΛḷΔ͜ͱ͕༰қʹ ෭࣍
 ޮՌ

  43.   εςοϓɿςετΛࣗಈ࣮ߦ͠Α͏

  44. ঢ়گʮ͜Ε͔Β͸ͪΌΜͱϢχοτςετॻ͍͍ͯ͜͏ͳʂʯ   • ຊ൪؀ڥͰΤϥʔ͕ग़ͯ͠·ͬͨ • Ҏ߱ͷ༧๷ࡦͱͯͪ͠ΌΜͱ
 ςετΛॻ͍͍ͯ͘ํ਑ʹܾఆ • ςετύεͨ͠ίʔυ͚ͩσϓϩΠ


    ͢ΔΑ͏ʹ͍ͨ͠
  45.   $PEF#VJME

  46. $PEF#VJME   ϏϧυαʔϏε • ࢦఆͷεϖοΫͷίϯςφ্ʹ • ࢦఆͷϑΝΠϧΛஔ͍ͯ • ೚ҙͷίϚϯυΛ࣮ߦͯ͠

    • ݁ՌΛS3ʹΞ΢τϓοτ͢Δ
  47. $PEF#VJMEͰ΍Δ͜ͱ   • AmazonLinux2্Ͱ • ඞཁͳύοέʔδΠϯετʔϧͯ͠ • ComposerͰ֎෦ϥΠϒϥϦΛΠϯετʔϧ •

    PHPUnit࣮ߦ
  48. $PEF#VJMEͷઃఆιʔείʔυ   buildspec.yml ϧʔτσΟϨΫτϦʹஔ͘ ଓ͘ Ϗϧυͷ֤ஈ֊͝ͱʹ
 ࣮ߦ͢ΔίϚϯυΛ
 هड़

  49. $PEF#VJMEͷઃఆιʔείʔυ   buildspec.yml ϧʔτσΟϨΫτϦʹஔ͘ ଓ͖ ԿΛΞ΢τϓοτʹ͢Δͷ͔
 ࠓճͷ৔߹͸શϑΝΠϧ

  50. $PEF#VJMEͷઃఆ$PEF1JQFMJOF   SourceͱStgσϓϩΠ
 ͷؒʹεςʔδ௥Ճ

  51. $PEF#VJMEॲཧத   composer install ࣮ߦ͍ͯ͠Δ͋ͨΓ

  52. $PEF#VJMEॲཧத   PHPUnit࣮ߦ

  53. ςετࣦഊͨ͠Β   ࣍ͷStg؀ڥ΁ͷσϓϩΠεςʔδ
 ʹભҠ͠ͳ͍ ͜Ε͸ҰͭલͷϦϏδϣϯ

  54. ঢ়گվળίʔυͷ࣭Ξοϓ   • ϦϞʔτϒϥϯνʹมߋՃ͑Δ౓ςετ࣮ߦ • ςετͰΤϥʔ͕ग़ͨ৔߹͸σϓϩΠ͞Εͳ͍ • (ςετ͸ॻ͍ͯͶ)

  55.   ൪֎ฤɿ͔ΒΞϓϦέʔγϣϯΛ࡞Δͱ͖

  56.   $PEF4UBS

  57. $PEF4UBS   • ͜Ε·Ͱ঺հͯ͠དྷͨΑ͏ͳ
 CI/CDύΠϓϥΠϯ෇͖ͷ؀ڥΛ
 αΫοͱ࡞ͬͯ͘ΕΔ

  58. -BSBWFMͷςϯϓϨʔτ΋͋Γ·͢  

  59.   ·ͱΊ

  60. ·ͱΊ   • CodeγϦʔζΛ঺հ͠·ͨ͠ • ઃఆ͸໘౗ͳ΋ͷ΋͋Δ͔΋͠Εͳ͍
 Ͱ΋΍͓ͬͯ͘ͱ೔ʑͷ࡞ۀෛՙΛ௿ݮͰ͖Δ • CI/CD؀ڥ੔͑ͯշదͳ։ൃϥΠϑΛʂ

  61.   ͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠