Slide 1

Slide 1 text

AWS CodeBuild

Slide 2

Slide 2 text

΋͘͡ • AWS CodeBuildͱ͸ • ͳʹ͕͏Ε͍͠ͷ͔ʁ • ϏϧυαʔϏεൺֱ • ࢼ͢ • Ϣʔεέʔε • ஫ҙ఺ 2

Slide 3

Slide 3 text

AWS CodeBuild ͱ͸

Slide 4

Slide 4 text

ͱ͋ΔΞϓϦέʔγϣϯͷϏϧυϓϩηε 1. Unit TestͷͨΊʹϞοΫαʔϏεΛΠϯετʔϧ͢Δ 2. ςετΛ࣮ߦ͢Δ 3. ੒Ռ෺Λੜ੒͢ΔεΫϦϓτ͕RakefileͳͷͰrubyΛΠϯετʔϧ 4. rake࣮ߦ 5. ੜ੒͞Εͨ੒Ռ෺ΛS3ʹΞοϓϩʔυ͢ΔͨΊawsΫϥΠΞϯτΛಋೖ 6. S3΁ͷΞοϓϩʔυͷͨΊʹΞΫηεΩʔΛઃఆ 7. S3΁Ξοϓϩʔυ 4

Slide 5

Slide 5 text

1. Unit TestͷͨΊʹϞοΫαʔϏεΛΠϯετʔϧ͢Δ 2. ςετΛ࣮ߦ͢Δ 3. ੒Ռ෺Λੜ੒͢ΔεΫϦϓτ͕RakefileͳͷͰrubyΛΠϯετʔϧ 4. rake࣮ߦ 5. ੜ੒͞Εͨ੒Ռ෺ΛS3ʹΞοϓϩʔυ͢ΔͨΊawsΫϥΠΞϯτΛಋೖ 6. S3΁ͷΞοϓϩʔυͷͨΊʹΞΫηεΩʔΛઃఆ 7. S3΁Ξοϓϩʔυ ͱ͋ΔΞϓϦέʔγϣϯͷϏϧυϓϩηε 5 Ϗϧυϓϩηεͷ ଟ༷ԽɾෳࡶԽ

Slide 6

Slide 6 text

Ұํ

Slide 7

Slide 7 text

— Martin Fowler, Continuous Integration, 01 May 2006 ΑΓͻΜͺΜʹΠϯςάϨʔγϣ ϯΛߦ͏΄͏͕ɺ·Εʹ͔͠ߦ Θͳ͍ΑΓ΋๬·͍͠ ” “

Slide 8

Slide 8 text

ܧଓతΠϯςάϨʔ γϣϯͷͨΊͷ ϏϧυαʔϏεɾπʔ ϧ͕ొ৔

Slide 9

Slide 9 text

AWS͸ɺϏϧυαʔϏε͚͕ͩͳ͔ͬͨ AWS CodePipeline: How to Create a Custom Action – Linux Academy Blog https://linuxacademy.com/blog/amazon-web-services-2/aws-codepipeline-how-to-create-a-custom-action/

Slide 10

Slide 10 text

AWS͸ɺϏϧυαʔϏε͚͕ͩͳ͔ͬͨ AWS CodePipeline: How to Create a Custom Action – Linux Academy Blog https://linuxacademy.com/blog/amazon-web-services-2/aws-codepipeline-how-to-create-a-custom-action/

Slide 11

Slide 11 text

ͳʹ͕͏Ε͍͠ͷ͔ʁ

Slide 12

Slide 12 text

AWSͰ ׬݁͢Δ ͱ͍͏͜ͱ • Ϗϧυϓϩηεʹ͓͍ ͯΞΫηεΩʔͰ͸ͳ ͘IAMϩʔϧͰAWSϦ ιʔε΁ΞΫηεՄೳ • ඞཁͳ෼͚ͩ࢖͍ɺ࢖ͬ ͨ෼͚ͩ՝ۚ • ϏϧυϘϦϡʔϜʹԠ ͯࣗ͡ಈεέʔϧ 12

Slide 13

Slide 13 text

ϏϧυαʔϏεൺֱ

Slide 14

Slide 14 text

ఏڙܗࣜ • ύοέʔδΠϯετʔϧܕ 14 • ϑϧϚωʔδυαʔϏεܕ • ϑϧϚωʔδυαʔϏεܕ

Slide 15

Slide 15 text

ྉۚମܥ • ແྉɻͨͩ͠ΠϯετʔϧઌαʔόͷՔಇඅ͸ඞཁɻ 15 • GitHubެ։ϦϙδτϦͷ৔߹ɺແྉɻ • GitHubϓϥΠϕʔτͷ৔߹ɺֹ݄/೥ֹ ՝ۚɺఆ੍ֹɻ • ֹ݄՝ۚɺैྔ੍ɻ

Slide 16

Slide 16 text

΢Ϧ • ߴΧελϚΠζੑɻଟ͘ͷϓϥάΠϯ͕ެ։͞Ε͍ͯΔɻ • Ϗϧυ͚ͩͰͳ͘ςετͷϨϙʔςΟϯά΋Մೳɻ 16 • GitHubͱͷ਌࿨ੑɺMac / iOSΞϓϦͷϏϧυ΋Մɻ • ϏϧυαʔόͷࣗಈεέʔϧɺIAMʹΑΔΞΫηε؅ཧɻ

Slide 17

Slide 17 text

ͲΜͳͱ͖ʹ࢖͏ʁ • ࣾ಺ʹJenkins͓͡͞Μ͕ډΔɻ • ςετ݁ՌͷϨϙʔςΟϯάۀ຿Λߦ͍͍ͨɻ 17 • ΦʔϓϯιʔεϓϩδΣΫτΛςετ͍ͨ͠ɻ • iOSΛϏϧυ͍ͨ͠ɻ • AWSϦιʔεʹΞΫηεͯ͠౷߹ςετΛ͍ͨ͠ɻ • σϓϩΠઌ͕AWSͰɺCodeDeployΛ࢖͍ͬͯΔɻ

Slide 18

Slide 18 text

1ϲ݄ͷྉۚࢼࢉ • 5ਓνʔϜʢWebΞϓϦɺAndroidΞϓϦɺAPIɺCMSΛ։ൃʣԾఆ • GitHubͷϓϥΠϕʔτϦϙδτϦΛར༻ʢͳͷͰTravisCI͸༗ྉʣ • ൟ๩ظ͸1೔͋ͨΓ100ͷϏϧυ͕૸Δ • ൟ๩ظ͸ಉ࣌ʹ5ͭͷϏϧυ͕૸Δ͜ͱ͕͋Δ • ൟ๩ظ͸Ұϲ݄ଓ͘ 18

Slide 19

Slide 19 text

1ϲ݄ͷྉۚࢼࢉ - TravisCI • Small Business Λબ୒ • $249 per month 19

Slide 20

Slide 20 text

1ϲ݄ͷྉۚࢼࢉ - CodeBuild • medium Λબ୒ • 0.01$/min × ( 5mim × (100 * 30) ) = 150 $ • $150 per month 20

Slide 21

Slide 21 text

ࢼ͢

Slide 22

Slide 22 text

CodeBuildΛಈ࡞ͤ͞Δखॱ 1. ϏϧυϓϩδΣΫτΛ࡞੒͢ΔʢAWSଆʣ 2. buildspec.ymlΛϓϩδΣΫτϧʔτʹ༻ҙ͢Δʢιʔείʔυଆʣ 3. ϏϧυΛ࣮ߦ͢ΔʢAWSଆʣ 4. ݁ՌΛ֬ೝ͢Δ 22

Slide 23

Slide 23 text

ϏϧυϓϩδΣΫτΛ࡞੒͢Δ • Sourceɿ
 GitHubͱ࿈ܞ͢Δ͜ͱͰɺϓ ϥΠϕʔτϦϙδτϦͷιʔε ίʔυΛϏϧυ͢Δ͜ͱ΋Մ ೳ 23

Slide 24

Slide 24 text

ϏϧυϓϩδΣΫτΛ࡞੒͢Δ • Environmentɿ
 ϏϧυίϚϯυ͕ϓϦΠϯε τʔϧ͞Εͨαʔό·ͨ͸ Dockerίϯςφ্Ͱ࣮ࢪ 24 Build Environment Reference for AWS CodeBuild http://docs.aws.amazon.com/ ja_jp/codebuild/latest/userguide/build- env-ref.html • Artifactsɿ
 ੒Ռ෺ΛS3ʹஔ͘Α͏ʹ͢Δ

Slide 25

Slide 25 text

ϏϧυϓϩδΣΫτΛ࡞੒͢Δ • Service roleɿ
 Ϗϧυ࣮ߦ࣌ͷIAMϩʔϧΛ બ୒ • Advances settingsɿ
 λΠϜΞ΢τ
 ܭࢉػλΠϓ
 ؀ڥม਺
 ͳͲΛઃఆ͢Δ • ͜ΕͰϏϧυϓϩδΣΫτ͕ ׬੒ 25

Slide 26

Slide 26 text

buildspec.yml • ιʔεϦϙδτϦʹίϛοτ ͢ΔϓϩδΣΫτͷϧʔτʹ ༻ҙ • Ϗϧυ࣌ɺAWS CodeBuild͕ buildspec.ymlΛΈ࣮ͯࢪ͢Δ ΂͖಺༰Λղऍ͢Δ • ௥ՃͰඞཁͳ΋ͷͷΠϯετʔ ϧ΍ɺϏϧυίϚϯυ࣮ߦͷ ࢦࣔॻ 26

Slide 27

Slide 27 text

buildspec.yml • installɿ
 ςετͰར༻͢ΔɺϩʔΧϧαʔϏ εͳͲΛΠϯετʔϧ͢Δ • pre_buildɿ
 ϏϧυલͷαʔϏεىಈॲཧ • buildɿ
 Ϗϧυɾςετ࣮ߦ • post_buildɿ
 ੒Ռ෺ͷ࡞੒΍௨஌ͳͲ • buildspec.yml΋ҰॹʹϦϙδτϦ ΁PUSH 27

Slide 28

Slide 28 text

Ϗϧυ࣮ߦ • ํ๏͸େ͖͘;ͨͭ • AWSίϯιʔϧ͔ΒϏϧυ Λ࣮ߦ͢Δ • AWS ίϚϯυΫϥΠΞϯτ ΍SDKΛ༻͍ͯϩʔΧϧϚ γϯ͔Β࣮ߦ 28

Slide 29

Slide 29 text

݁ՌΛ֬ೝ͢Δ

Slide 30

Slide 30 text

Ϣʔεέʔε

Slide 31

Slide 31 text

Q. ϩʔΧϧ؀ڥͰͷςετͷͨΊʹɺ͢Ͱʹνʔ ϜͷͨΊʹ༻ҙͨ͠DockerΠϝʔδ͕͋Δ • AWS CodeBuildͰ͸ςετ࣮ߦ؀ڥͱͯ͠DockerΛબ୒Ͱ͖Δɻ༻ ҙͨ͠DockerΠϝʔδΛDockerHubʹΞοϓϩʔυ͠ɺAWS CodeBuildͷϓϩδΣΫτ࡞੒ஈ֊ͰϏϧυ؀ڥͱͯ͠Ξοϓϩʔυ ͨ͠DockerΠϝʔδΛࢦఆ͢Δɻbuildspec.ymlʹ͸ύοέʔδͷΠ ϯετʔϧॲཧ͸ඞཁͳ͘ͳΔɻ 31

Slide 32

Slide 32 text

Q. ಛఆͷϒϥϯνʹϓογϡʗϚʔδ͞Εͨͱ͖ɺ ࣗಈͰσϓϩΠ͞ΕΔΑ͏ʹ͍ͨ͠ • AWS CodePipelineΛηοτΞοϓ͢Δɻ Sourceͱͯ͠GitHubͷϒϥϯνΛબ୒͠ɺ BuildʹCodeBuildΛ࢖͏ɻੜ੒͞ΕͨΞʔςΟ ϑΝΫτΛCodeDeployΛ༻͍ͯಛఆͷEC2 Π ϯελϯεʹσϓϩΠ͢Δɻ 32

Slide 33

Slide 33 text

AWS CodeBuildͷ஫ҙ఺ • ౦ژϦʔδϣϯະରԠ 
 EU (Ireland), US East (N.Virginia), US East (Ohio)US, West (Oregon) • iOS / MacΞϓϦ ͷϏϧυ͸ະରԠ • ແྉར༻࿮ 100෼ ͸ build.general.small ͷλΠϓͷΈ • Ϗϧυ؀ڥʹ Docker ΠϝʔδΛࢦఆͨ͠৔߹ɺENTRYPOINT, CMD ͕ಈ࡞͠ͳ͍ʢແࢹ͞ΕΔʁʣ 33

Slide 34

Slide 34 text

݁࿦1ɿTravisCI, CircleCI͔Β৐Γ׵͔͑ͯͭ͏ • ·ͩ͋ΘͯΔΑ͏ͳ࣌ؒ͡Όͳ͍ • ΍ΔͳΒνʔϜશһΛ׬શʹ৐Γ׵͍͑ͨ • Mac, iOS ϏϧυʹରԠ͢ΔͱҰؾʹՃ଎ͦ͠͏ • ϏϧυεςʔλεͷύϒϦοΫAPI͕ཉ͍͠ʢAPI Gateway + AWS Lambda + AWS CodeBuild API + S3 Ͱ΍Ζ͏ͱࢥ͑͹Ͱ͖Δʁʣ • ౦ژϦʔδϣϯʹ͖ͨΒຊؾͩ͢ 34

Slide 35

Slide 35 text

݁࿦2ɿTravisCI, CircleCIͱॅΈ෼͚͔ͯͭ͏ • ΞʔΩςΫνϟ͕AWSͰ׬͍݁ͯ͠Δ৔߹͸࠾༻Ձ஋͕ߴ͍ • Unit Test ໨తͰͳ͘ɺ࣮ࡍʹAWSϦιʔεʹΞΫηεͯ͠ͷςετ ͸CodeBuild͕΍Γ΍͍͢ • ΠϯςάϨʔγϣϯςετ • ෛՙςετ • ηΩϡϦςΟςετ 35

Slide 36

Slide 36 text

ࢀߟ • AWS CodeBuild Documentation - https://aws.amazon.com/jp/ documentation/codebuild/ • CodeBuild ʛ ಛूΧςΰϦʔ ʛ Developers.IO http:// dev.classmethod.jp/referencecat/aws-codebuild/ 36