Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
΅͘ͷߟ͍͖͑ͨ͞ΐ͏ͷ։ൃϑϩʔ PHPฤ Yuta Adachi
Slide 2
Slide 2 text
ࣗݾհ ҆ୡ ༐ଠ (@UAdachi) ! ग़ɿౡࠜݝদߐࢢ ͓ࣄɿChatWork ΠϯϑϥνʔϜ ! ڵຯ͋Δ͜ͱɿυϝΠϯۦಈઃܭɺScalaɺςχε (Οϯϒϧυϯ։࠵த) !
Slide 3
Slide 3 text
IUUQTDJSDMFDJDPN
Slide 4
Slide 4 text
͓ॻ͖ • ։ൃϑϩʔΛ࠷దԽ͍ͯ͘͠త • ։ൃڥ • ίϛϡχέʔγϣϯ • CI • σϓϩΠ
Slide 5
Slide 5 text
త ! • ։ൃͷߴԽ • ΦϖϨʔγϣϯϛεͷ༧ • ϓϩμΫτͷ্࣭ + ՄࢹԽ
Slide 6
Slide 6 text
։ൃڥ
Slide 7
Slide 7 text
Ͳ͏ͬͯߏஙͯ͠·͔͢ʁ • Vagrantͬͯͬͯ·͔͢ʁ
Slide 8
Slide 8 text
ϝϯςφϯε • ։ൃڥͩͬͯߋ৽͞Εଓ͚Δ • ߏஙखॱॻΛ࡞Δͷେม " εΫϦʔϯγϣοτʹҹॻ͍ͯɺઆ໌จΛఴ͑ͯ…
Slide 9
Slide 9 text
ʮԶͷڥʯ ྫ. Aʮಈ͔Ͷʔʯ BʮԶͷڥͩͱಈ͘ʯ Cʮchown nginx:nginx /var/cache/nginx ʁʯ
Slide 10
Slide 10 text
։ൃڥ as Code • खॱॻΛίʔυʹஔ͖͑Δ " ߏཧπʔϧ (Ansible, Chef, SaltStack) • VirtualBox + Vagrant + AnsibleͷΠϯετʔϧ " Brewfile
Slide 11
Slide 11 text
։ൃڥʹԿΛೖΕ͓ͯ͘ʁ • ։ൃʹඞཁͳϛυϧΣΞ " PHP5.5, MySQL, memcached, redis-server • ศརπʔϧ " git, tcpdump, netcat, wget, zsh • δϣʔΫπʔϧ " sl
Slide 12
Slide 12 text
ηοτΞοϓ $ git clone {repos} $ brew bundle $ vagrant up IUUQTHJUIVCDPNBEBVMBSBWFMQMBUGPSN
Slide 13
Slide 13 text
։ൃڥͷߋ৽ • νϟοτͰΞφϯε + λεΫԽ
Slide 14
Slide 14 text
No content
Slide 15
Slide 15 text
ߋ৽खॱ • มߋՕॴ͕ଟ͍߹ $ git pull $ vagrant destroy $ vagrant up
Slide 16
Slide 16 text
ߋ৽खॱ • ͪΐͬͱͨ͠มߋ $ ./update ࣮ࡍ #ͷΑ͏ͳίϚϯυΛ·ͱΊͯΔ͚ͩ $ git pull $ ansible-playbook site.yml —tags nginx
Slide 17
Slide 17 text
։ൃڥͷςετ • ςετ " serverspecͰςετ
Slide 18
Slide 18 text
։ൃڥͷςετ • ςετ " ࠶ߏங͢Δςετ $ vagrant destroy && vagrant up && rake spec " ႈੑͷνΣοΫ $ vagrant provision && vagrant provision && rake spec " ਓபνΣοΫ ਓபؾ࣭ͳΤϯδχΞʹ͓ࢼ͠ར༻ͯ͠Β͏
Slide 19
Slide 19 text
։ൃڥͷCI • ։ൃڥCI͠Α͏ʂ " (ํ๏ޙ΄Ͳ)
Slide 20
Slide 20 text
ίϛϡχέʔγϣϯ
Slide 21
Slide 21 text
νϟοτ • ChatWork
Slide 22
Slide 22 text
ϨϏϡʔ • ϨϏϡΞʔʹλεΫΛৼΔɺݻఆԽͤ͞ͳ͍ " ৄͦ͠͏ͳਓʹґཔ, ෳਓʹґཔ !
Slide 23
Slide 23 text
௨ • ϓϧϦΫΤετ • CIͰςετʹࣦഊ • τϐοΫϒϥϯν͕Ϛʔδ͞Εͨ • εςʔδϯάڥ͕ߋ৽ • ϦϦʔε
Slide 24
Slide 24 text
෦׆ • ݴޠɺΤσΟλɺπʔϧɺOSɺ… ͳΜͰOK • ࠔͬͨͱ͖෦׆Ͱ࣭ " ୭͔ৄ͍͠ਓ͕ڭ͑ͯ͘ΕΔ (ࣾStack Overflow) • ৽ணใͷڞ༗
Slide 25
Slide 25 text
෦׆
Slide 26
Slide 26 text
No content
Slide 27
Slide 27 text
No content
Slide 28
Slide 28 text
No content
Slide 29
Slide 29 text
ܧଓతΠϯςάϨʔγϣϯ
Slide 30
Slide 30 text
CIαʔϏε͍Ζ͍Ζ • Travis CI • CircleCI • Shippable • wercker • Codeship
Slide 31
Slide 31 text
Travis CI • ศརͳͱ͜Ζ " composer.phar͕༻ҙ͞ΕͯΔ " phpenv (5.3ʙ5.6), hiphop " sudo͕͑Δ
Slide 32
Slide 32 text
Travis CI • composer͕༧Ί༻ҙ͞Ε͍ͯΔ " Ͱ $ composer self-update ඞཁ
Slide 33
Slide 33 text
Travis CI • /usr/bin/php —-version " HipHop VM
Slide 34
Slide 34 text
CircleCI • όʔδϣϯͷબࢶ͕๛ " 5.3.3, 10, 20, 25 " 5.4.4, 5, 6, 7, 8, 9, 10, 11, 12, 13… " 5.5.0, 2, 3, 7, 8, 11 ! • 5.6ɺhiphop༻ҙ͞Ε͍ͯͳ͍ IUUQTDJSDMFDJDPNEPDTFOWJSPONFOUQIQ
Slide 35
Slide 35 text
CircleCI • ϏϧυޙʹSSHͰϩάΠϯͰ͖Δ • sudoͰ͖ͳ͍
Slide 36
Slide 36 text
wercker • ࣗલͰboxΛ༻ҙͰ͖Δ • Vagrant + Ansible + serverspecೖΕͨbox " EC2DigitalOceanʹεϙοτΠϯελϯε " AnsibleͷϓϨΠϒοΫ(ChefͷϨγϐ)ΛCI
Slide 37
Slide 37 text
CIαʔϏε for PHPer • scrutinizer-ci • SensioLabsInsight
Slide 38
Slide 38 text
scrutinizer-ci • ΠϯεϖΫγϣϯಛԽ • ςετ&ΧόϨοδ • ιϑτΣΞϝτϦΫεɺॏෳͷଌఆ • ࣭ͷఆྔԽɾՄࢹԽ
Slide 39
Slide 39 text
scrutinizer-ci • PHPUnit & ΧόϨοδ (xdebug.so) • php-code-sniffer, php-cs-fixer • phpcpd, phpmd, phploc, pdepend • sensiolabs security checker (ޙ΄Ͳ) " ࣗͰ༻ҙ͠ͳͯ͘ྑ͍!!!
Slide 40
Slide 40 text
scrutinizer-ci • ͍ " ϫʔΧʔͷੑೳ͕ѱ͍ (༧)
Slide 41
Slide 41 text
scrutinizer-ci
Slide 42
Slide 42 text
scrutinizer-ci • ༗ྉϓϥϯͩͱίϯςφ͍ (ʁ) • ϝτϦΫεऩूͷͨΊ͚ͩʹ͏ͷ͋Γ͔ " ςετTravis CIͱ͔werckerͰճ͢
Slide 43
Slide 43 text
SensioLabsInsight • ΠϯεϖΫγϣϯʹಛԽ • ηΩϡϦςΟνΣοΫॆ࣮͍ͯ͠Δ
Slide 44
Slide 44 text
SensioLabsInsight • ϓϦϖΞʔυεςʔτϝϯτΛ༻ͯ͠ͳ͍ΫΤϦ • XSS • σόοάϓϦϯτ (var_dump, print_r) • eval() • …
Slide 45
Slide 45 text
SensioLabsInsight
Slide 46
Slide 46 text
ΧόϨοδϨϙʔτ scrutinizer-ci or coveralls
Slide 47
Slide 47 text
Coveralls
Slide 48
Slide 48 text
Coveralls ຊޠରԠŵŦƄō?(ɾ㱼ɾ )ͬ/႘˶ˑŧƃ
Slide 49
Slide 49 text
ґଘϥΠϒϥϦͷཧ • composer.lock͍ͭΞοϓσʔτ͢Δʁ !
Slide 50
Slide 50 text
ґଘϥΠϒϥϦͷཧ ߋ৽͕ཷ·Δ # composer update # git diff # ා͘ͳͬͯఘΊΔ # ͞Βʹཷ·Δ
Slide 51
Slide 51 text
VersionEye IUUQTXXXWFSTJPOFZFDPN
Slide 52
Slide 52 text
VersionEye • composer.jsonΛνΣοΫ͠ɺߋ৽͕͋Ε௨ " νΣοΫִؒDaily, Weekly, Monthly͔ΒબՄೳ • APIఏڙ͞Ε͍ͯΔ " CIαʔϏεͰϏϧυ࣌ʹνΣοΫͰ͖Δ
Slide 53
Slide 53 text
No content
Slide 54
Slide 54 text
VersionEye • ґଘؔΛՄࢹԽͯ͘͠ΕΔ
Slide 55
Slide 55 text
No content
Slide 56
Slide 56 text
ηΩϡϦςΟΞοϓσʔτ • ੬ऑੑใͷΩϟονΞοϓ " ͜ΕCI࣌ʹͰ͖ͨΒخ͍͠
Slide 57
Slide 57 text
Security Advisories Checker IUUQTTFDVSJUZTFOTJPMBCTPSHDIFDL
Slide 58
Slide 58 text
Security Advisories Checker • ੬ऑੑͷ͋ΔϥΠϒϥϦΛ͍ͬͯͳ͍͔νΣοΫ " composer.lockͰஅ • Web / Cli / API͕༻ҙ͞Ε͍ͯΔ " CIαʔϏεͰϏϧυ࣌ʹνΣοΫͰ͖Δ
Slide 59
Slide 59 text
No content
Slide 60
Slide 60 text
ηΩϡϦςΟΞοϓσʔτ • Security Advisories Checker " ͋͘·ͰґଘϥΠϒϥϦ͕ର • JVNνΣοΫ͠·͠ΐ͏
Slide 61
Slide 61 text
CIͷ·ͱΊ
Slide 62
Slide 62 text
CIͰΓ͍ͨ͜ͱ • ςετ (PHPUnit, phpspec, behat) • ΧόϨοδ (coveralls) • ηΩϡϦςΟ (Sensiolabs Security Advisories Checker) • ґଘؔ (VersionEye) • ϝτϦΫε (phpmd, phpcpd, pdepend) " scrutinizer-ci
Slide 63
Slide 63 text
CIαʔϏεͷબͼͷϙΠϯτ • ίϯςφͷੑೳͱฒྻʹ࣮ߦՄೳͳδϣϒ " ։ൃεϐʔυʹӨڹ, {։ൃਓ} / 10 ͘Β͍ฒߦʹಈ͔͍ͨ͠ • ίʔυΛಈ͔͢ڥ࡞Γ͕େม͔Ͳ͏͔ " sudo͕ඞཁʁ sshͰϩάΠϯ͍ͨ͠ʁ • OS " RHELܥ͍͔ͨͬͨΒ ʮ Vagrant + EC2 | DigitalOcean ʯ
Slide 64
Slide 64 text
CIαʔϏεͷબͼͷϙΠϯτ • Amazon LinuxREHLΛ͍͍ͨ " werkcker + Vagrant + EC2
Slide 65
Slide 65 text
͓͢͢ΊͷΈ߹Θͤ • CircleCI • wercker • Travis CI + • scrutinizer-ci ςετΧόϨοδ ΠϯεϖΫγϣϯ
Slide 66
Slide 66 text
σϓϩΠ
Slide 67
Slide 67 text
σϓϩΠπʔϧ • Capistrano • Rocketeer (PHPCapistrano) • Magallanes (PHP) • Altax (PHP) • envoy (PHP)
Slide 68
Slide 68 text
CIͱσϓϩΠ • CIͷྲྀΕ 1. લॲཧ (git cloneɺcomposer installͳͲ) 2. ςετ 3. ޙॲཧ (ΧόϨοδͷੜ) 4. σϓϩΠ
Slide 69
Slide 69 text
ᶃςετσϓϩΠπʔϧͷ४උ
Slide 70
Slide 70 text
ᶄ৽͍͠ϦϦʔε༻ͷσΟϨΫτϦΛ࡞ SFMFBTFTˡOFX SFMFBTFT DVSSFOUSFMFBTFT
Slide 71
Slide 71 text
ᶄHJUDMPOF\ϦϙδτϦ^ SFMFBTFTˡOFX
Slide 72
Slide 72 text
ᶅDPNQPTFSJOTUBMM ࡁ
Slide 73
Slide 73 text
ᶆᶅΛSTZODѹॖTDQͳͲͰసૹ SFMFBTFTˡOFX SFMFBTFT DVSSFOUSFMFBTFT
Slide 74
Slide 74 text
! ·ͱΊ
Slide 75
Slide 75 text
·ͱΊ • ඇಉظͷίϛϡχέʔγϣϯ׆༻͠Α͏ • CIαʔϏεͰςετҎ֎ͷ͜ͱ৭ʑͰ͖Δ • ༷ʑͳCIαʔϏε͔ΒɺνʔϜʹඞཁͳͷΛબ΅͏ " ෳಉ࣌ʹͬͯྑ͍
Slide 76
Slide 76 text
αϯϓϧ • ։ൃڥ " https://github.com/ada-u/laravel4-platform ! • ΞϓϦέʔγϣϯ " https://github.com/ada-u/laravel4-sample- application
Slide 77
Slide 77 text
ChatWork ΤϯδχΞɺืूதͰ͢ʂʂ
Slide 78
Slide 78 text
͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ