Slide 1

Slide 1 text

Copyright Re:Build.inc All Rights Reserved. Laravel5.5的 ܧଓ的インテグレʔション 嘉਺侑起 2018/08/07 3F#VJME

Slide 2

Slide 2 text

Copyright Re:Build.inc All Rights Reserved. "HFOEB ձࣾɾࣗݾ঺հ (JU-BC$*Λಋೖ͢ΔϝϦοτ (JU-BC$*ͷಋೖํ๏ -BSBWFM1)16OJUͷϝϦοτ

Slide 3

Slide 3 text

Copyright Re:Build.inc All Rights Reserved. ձࣾɾࣗݾ঺հ

Slide 4

Slide 4 text

Copyright Re:Build.inc All Rights Reserved. ࣗݾ঺հ ◆໊લ ླ໦ ޹೭(Suzuki Takayuki) ◆ࣗݾ঺հ ɾ1990೥ɺਆಸ઒ݝੜ·Εɻ ɾࣾձਓʹͳ͔ͬͯΒɺϓϩάϥϛϯάΛ࢝ΊΔɻ ɾ2015೥ʹϑϧεϐʔυʹೖࣾ͠ɺ2017೥ʹ ϑϦʔϥϯεΛ΍ͬͨޙʹ2017೥11݄ʹԭೄͰىۀɻ ◆झຯ ίεϓϨɺԻָϥΠϒɺϚϥιϯେձʹग़Δɺ໺ٿ؍ઓ ◆εΩϧ ɾPHP, Symfony2,CakePHP3,Laravel5, ɾJavaScript, backbone.js,Angular4

Slide 5

Slide 5 text

Copyright Re:Build.inc All Rights Reserved. ࣗݾ঺հ ◆໊લ Յ਺ ါى(Kakazu Yuki) @kkznch ◆ࣗݾ঺հ ɾ1990೥ɺԭೄݝੜ·Ε ɾ2016೥ʹԭిάϩʔόϧγεςϜζגࣜձࣾʹೖࣾɺ2018 ೥ʹגࣜձࣾRe:Build΁స৬ͯ͠ݱࡏʹࢸΔ ɾࠃ಺ॎஅ͍ͨ͠ ◆झຯ όϨʔϘʔϧɺϐΞϊɺήʔϜɺΧϑΣ८Γ ◆εΩϧ ɾPHPɺJavaScriptɺC/C++ɺPythonɺRuby ɾΠϯϑϥશൠɺηΩϡϦςΟগʑ

Slide 6

Slide 6 text

Copyright Re:Build.inc All Rights Reserved. ձࣾ঺հ ◆ձ໊ࣾ גࣜձࣾRe:Build ◆ॅॴ ԭೄݝԭೄࢢதԝ̍ஸ໨̍̒−̕ ◆ࣄۀ಺༰ ɾ೶ۀʹ͓͍ͯͷϑʔυϩεΛແ͘͢ ࣗࣾWEBαʔϏεͷاըɾ։ൃɻ ɾडୗ։ൃ ◆ࣾһ 4໊ ◆ΤϯδχΞͷಇ͖ํ ϦϞʔτϫʔΫՄೳͳࣗ༝ͳಇ͖ํΛਪ঑ͯ͠·͢ʂ

Slide 7

Slide 7 text

ɾαʔϏε໊ temite ɾγεςϜ֓ཁ ECϓϥοτϑΥʔϜ ΫϨδοτܾࡁ ΞϑΟϦΤΠτ ͳͲ ɾ࢖͍ͬͯΔٕज़ ݴޠ : PHP,JavaScript ϑϨʔϜϫʔΫ: laravel5,Vue.js,JQueryͳͲ ։ൃதͷαʔϏε

Slide 8

Slide 8 text

ϑϩϯταΠυ αʔόαΠυ Ϗϧυπʔϧ DB

Slide 9

Slide 9 text

૊৫ମ੍ ϓϩμΫτΦʔφʔ ։ൃϦʔμʔ νʔϜϝϯόʔ ■ϓϩδΣΫτߏ੒ ɾϓϩμΫτΦʔφʔɿ1໊ ɾ։ൃϦʔμʔɿ1໊ ɾνʔϜϝϯόʔɿ3໊ ※σβΠφʔ΄΅ແ͠

Slide 10

Slide 10 text

Copyright Re:Build.inc All Rights Reserved. (JU-BC$*Λಋೖ͢ΔϝϦοτ

Slide 11

Slide 11 text

GitLabͱ͸ʁ

Slide 12

Slide 12 text

GitLabͱ͸ʁ GitHubͬΆౕ͍

Slide 13

Slide 13 text

GitLabͷΞΠίϯ

Slide 14

Slide 14 text

GitLabͷΞΠίϯʢچʣ ͳΜ͔ා͍

Slide 15

Slide 15 text

GitLabͷΞΠίϯ ॏͶͯΈͨ

Slide 16

Slide 16 text

GitLabͷػೳ

Slide 17

Slide 17 text

GitLabͷػೳ ͜͜Β΁ΜΑ͘࢖͏

Slide 18

Slide 18 text

‣ GitLabఏڙͷܧଓతΠϯςάϨʔγϣϯπʔϧ ‣ ϦϙδτϦ͕Push͞ΕͨλΠϛϯάͰಈ࡞͢Δ ‣ ಈ͔ͨ͢Ίʹ৭ʑͱ͝ʹΐ͝ʹΐ͢Δඞཁ͋Γ GitLab CIͱ͸ʁ

Slide 19

Slide 19 text

‣ PHPStan(PHP Static Analysis Tool)Ͱ੩తղੳ ‣ PHPUnitͰ୯ମςετɾ݁߹ςετ ‣ εςʔδϯά؀ڥ΁ͷσϓϩΠ GitLab CIͰฐ͕ࣾ΍ͬͯΔ͜ͱ

Slide 20

Slide 20 text

PHPStanͰ੩తղੳ

Slide 21

Slide 21 text

PHPUnitͰ୯ମςετɾ݁߹ςετ

Slide 22

Slide 22 text

εςʔδϯά؀ڥ΁ͷσϓϩΠ ※اۀൿີͷͨΊ͓ݟͤͰ͖·ͤΜ

Slide 23

Slide 23 text

2 3 GitLab CIΛಋೖ͢ΔϝϦοτ ѹ౗త҆৺ײ ͷ֫ಘ ॲཧͷࣗಈԽʹΑ Γޮ཰Ξοϓ ඼࣭Λ୲อ 1 2 3

Slide 24

Slide 24 text

Copyright Re:Build.inc All Rights Reserved. (JU-BC$*ͷಋೖํ๏

Slide 25

Slide 25 text

(1)PUSH (2)GitLab CI࣮ߦ (3)ίϯςφىಈ Gitlab (6)Envoy࣮ߦ ςετ࣮ߦ ίϯςφ σϓϩΠ࣮ߦ ίϯςφ (5)ίϯςφىಈ (4)UnitTest࣮ߦ (7)Pull ຊ൪؀ڥ or εςʔδϯά؀ڥ ϦϙδτϦ GiaLab CI ࣮ߦϑϩʔ

Slide 26

Slide 26 text

‣ SSH઀ଓ༻ͷ伴૊Λ࡞੒ɾొ࿥͢Δ ‣ DockerΠϝʔδΛ࡞੒ɾొ࿥͢Δ ‣ GitLabϥϯφʔ؅ཧ༻ϑΝΠϧΛ࡞੒͢Δ ‣ σϓϩΠλεΫϥϯφʔ؅ཧ༻ϑΝΠϧΛ࡞੒͢Δ GitLab CIಋೖखॱ

Slide 27

Slide 27 text

‣SSH઀ଓ༻ͷ伴૊Λ࡞੒ɾొ࿥͢Δ ‣ DockerΠϝʔδΛ࡞੒ɾొ࿥͢Δ ‣ GitLabϥϯφʔ؅ཧ༻ϑΝΠϧΛ࡞੒͢Δ ‣ σϓϩΠλεΫϥϯφʔ؅ཧ༻ϑΝΠϧΛ࡞੒͢Δ GitLab CIಋೖखॱ

Slide 28

Slide 28 text

(1)PUSH (2)GitLab CI࣮ߦ (3)ίϯςφىಈ Gitlab (6)Envoy࣮ߦ ςετ࣮ߦ ίϯςφ σϓϩΠ࣮ߦ ίϯςφ (5)ίϯςφىಈ (4)UnitTest࣮ߦ (7)Pull ຊ൪؀ڥ or εςʔδϯά؀ڥ ϦϙδτϦ GitLab CI͔ΒσϓϩΠઌ΁ σϓϩΠΛ࣮ߦ͢ΔͨΊʹ SSH઀ଓ༻ͷ伴૊͕ඞཁ ެ։伴Λઃஔ ൿີ伴Λઃஔ

Slide 29

Slide 29 text

(1)PUSH (2)GitLab CI࣮ߦ (3)ίϯςφىಈ Gitlab (6)Envoy࣮ߦ ςετ࣮ߦ ίϯςφ σϓϩΠ࣮ߦ ίϯςφ (5)ίϯςφىಈ (4)UnitTest࣮ߦ (7)Pull ຊ൪؀ڥ or εςʔδϯά؀ڥ ϦϙδτϦ σϓϩΠઌͷαʔό͔Β GitLabͷϦϙδτϦΛPull͢ΔͨΊʹ SSH઀ଓ༻ͷ伴૊͕ඞཁ ൿີ伴Λઃஔ ެ։伴Λઃஔ

Slide 30

Slide 30 text

‣ SSH઀ଓ༻ͷ伴૊Λ࡞੒ɾొ࿥͢Δ ‣DockerΠϝʔδΛ࡞੒ɾొ࿥͢Δ ‣ GitLabϥϯφʔ؅ཧ༻ϑΝΠϧΛ࡞੒͢Δ ‣ σϓϩΠλεΫϥϯφʔ؅ཧ༻ϑΝΠϧΛ࡞੒͢Δ GitLab CIಋೖखॱ

Slide 31

Slide 31 text

(1)PUSH (2)GitLab CI࣮ߦ (3)ίϯςφىಈ Gitlab (6)Envoy࣮ߦ ςετ࣮ߦ ίϯςφ σϓϩΠ࣮ߦ ίϯςφ (5)ίϯςφىಈ (4)UnitTest࣮ߦ (7)Pull ຊ൪؀ڥ or εςʔδϯά؀ڥ ϦϙδτϦ ςετɾσϓϩΠͷ࣮ߦΛߦ͏ ίϯςφͷݩͱͳΔ DockerΠϝʔδ͕ඞཁ ϩʔΧϧͰ࡞੒ͨ͠DockerΠϝʔδΛ GitLab Container Registryʹొ࿥

Slide 32

Slide 32 text

‣ SSH઀ଓ༻ͷ伴૊Λ࡞੒ɾొ࿥͢Δ ‣ DockerΠϝʔδΛ࡞੒ɾొ࿥͢Δ ‣GitLabϥϯφʔ؅ཧ༻ϑΝΠϧΛ࡞੒͢Δ ‣ σϓϩΠλεΫϥϯφʔ؅ཧ༻ϑΝΠϧΛ࡞੒͢Δ GitLab CIಋೖखॱ

Slide 33

Slide 33 text

(1)PUSH (2)GitLab CI࣮ߦ (3)ίϯςφىಈ Gitlab (6)Envoy࣮ߦ ςετ࣮ߦ ίϯςφ σϓϩΠ࣮ߦ ίϯςφ (5)ίϯςφىಈ (4)UnitTest࣮ߦ (7)Pull ຊ൪؀ڥ or εςʔδϯά؀ڥ ϦϙδτϦ Push͞ΕͨλΠϛϯάͰϦϙδτϦʹ .gitlab-ci.ymlͱ͍͏ϑΝΠϧ͕͋Ε͹ ͦͷதʹهࡌ͞Εͨδϣϒ͕࣮ߦ͞ΕΔ .gitlab-ci.ymlΛ࡞੒

Slide 34

Slide 34 text

.gitlab-ci.yml σϓϩΠ࣮ߦίϯςφ ͷॲཧ಺༰Λهड़ ςετ࣮ߦίϯςφͰ ࢖༻͢ΔαʔϏε΍ ॲཧ಺༰Λهड़ ࢖༻͢ΔDockerΠϝʔδ envoyίϚϯυʂ

Slide 35

Slide 35 text

‣ SSH઀ଓ༻ͷ伴૊Λ࡞੒ɾొ࿥͢Δ ‣ DockerΠϝʔδΛ࡞੒ɾొ࿥͢Δ ‣ GitLabϥϯφʔ؅ཧ༻ϑΝΠϧΛ࡞੒͢Δ ‣σϓϩΠλεΫϥϯφʔ؅ཧ༻ϑΝΠϧΛ࡞੒͢Δ GiLlab CIಋೖखॱ

Slide 36

Slide 36 text

(1)PUSH (2)GitlabCI࣮ߦ (3)ίϯςφىಈ Gitlab (6)Envoy࣮ߦ ςετ࣮ߦ ίϯςφ σϓϩΠ࣮ߦ ίϯςφ (5)ίϯςφىಈ (4)UnitTest࣮ߦ (7)Pull ຊ൪؀ڥ or εςʔδϯά؀ڥ ϦϙδτϦ σϓϩΠ࣮ߦίϯςφͰenvoyίϚϯυ ͕࣮ߦ͞ΕɺEnvoy.blade.phpʹهड़ͨ͠ ॲཧ͕࣮ߦ͞ΕΔ Envoy.blade.phpΛ࡞੒

Slide 37

Slide 37 text

Envoy.blade.php ෳ਺ͷσϓϩΠઌΛهड़Մೳ EnvoyͷதͰ࢖༻͢Δ άϩʔόϧม਺తͳͷΛఆٛ ۩ମతͳॲཧΛ৭ʑͱهड़ @serversσΟϨΫςΟϒͰࢦఆͨ͠ϗετʹSSH઀ଓ͠ɺ ͦͷ಺෦Ͱ@storyσΟϨΫςΟϒ಺ͷॲཧ͕࣮ߦ͞ΕΔ

Slide 38

Slide 38 text

͜͜·Ͱ΍ͬͯ GitLab CI͕ಈ͖·͢ʢଟ෼ʣ

Slide 39

Slide 39 text

ৄࡉʹ͍ͭͯ͸ฐࣾͷϒϩά͔ Յ਺ݸਓͷϒϩάΛࢀর͍ͩ͘͞ ※ࢀߟ ʮגࣜձࣾRe:Buildͷϒϩάʯ ʮ͚͚ͣΜηϧϑϋοΩϯάʯ

Slide 40

Slide 40 text

Copyright Re:Build.inc All Rights Reserved. -BSBWFM1)16OJUͷϝϦοτ

Slide 41

Slide 41 text

4 1 LaravelͰςετ͢ΔϝϦοτ Merit ᶃςετ༻ͷget,postϝιου͕͋Δ ᶄϨεϙϯεͷΞαʔτ͕๛෋ ᶅςετ༻ͷτϨΠτ͕ศར ᶆϞοΫԽͷ࢓૊Έ͕ศར

Slide 42

Slide 42 text

getϝιουͷྫ

Slide 43

Slide 43 text

postϝιουͷྫ

Slide 44

Slide 44 text

ϨεϙϯεͷΞαʔτ͕๛෋

Slide 45

Slide 45 text

ςετ༻τϨΠτ͕ศར ‣ RefreshDatabaseɿ - ̍ͭͷςετ͕ऴΘΔͨͼʹDBΛϦϑϨογϡ͢Δ ‣ DatabaseTransactionsɿ - ̍ͭͷςετ͕ऴΘΔͨͼʹDBΛςετ։࢝௚લͷঢ়ଶ ·ͰϩʔϧόοΫ͢Δ ‣ WithoutMiddlewareɿ - ࢓ֻ͚ΒΕ͍ͯΔMiddlewareΛແࢹ

Slide 46

Slide 46 text

ɾۄͶ͗ͷΑ͏ͳߏ଄ͰϦΫΤετͱ Ϩεϙϯεͷؒʹ༷ʑͳॲཧΛڬΈࠐ Έ΍͍͢ ɾόϦσʔγϣϯͳͲ΋୯ҰͷΤϯςΟ ςΟʹґଘ͢ΔͷͰ͸ͳ͘ɺForm୯ ҐͰ࣮૷Ͱ͖Δ MiddleWareͷྫ ೝ ূ ν Σ ο Ϋɺ ό Ϧ σ ʔ γ ϣ ϯɺ CSRFτʔΫϯͷνΣοΫ [ิ଍] Middlewareͱ͸ʁ

Slide 47

Slide 47 text

ϞοΫԽͷ࢓૊Έ͕ศར

Slide 48

Slide 48 text

ϞοΫԽ͢Δલ Mail Class Router Controller SMTPαʔόʔ

Slide 49

Slide 49 text

ϞοΫԽͨ͋͠ͱ Router Controller SMTPαʔόʔ Mail Class SMTPαʔόʔʹϝʔϧΛૹ৴ͨ͜͠ͱ ʹͯ͘͠ΕΔʢ࣮ࡍʹ͸ૹ৴͠ͳ͍ʣ

Slide 50

Slide 50 text

Copyright Re:Build.inc All Rights Reserved. ·ͱΊ

Slide 51

Slide 51 text

5 1 ·ͱΊ ᶃ GitLab CIͰςετٴͼσϓϩΠॲཧΛࣗಈԽ͢Δ͜ ͱʹΑΓɺ࡞ۀΛޮ཰Խͭͭ͠඼࣭ͷ୲อ͕Ͱ͖Δ ᶄ LaravelͷPHPUnitʹ͸ศརͳΞαʔτ΍τϨΠτ͕ ༻ҙ͞Ε͍ͯΔͨΊɺՄಡੑɾอकੑͷߴ͍ςετ͕ ॻ͚Δ