PHP BLT #4 http://phpblt.connpass.com/event/27655/
ΦϯϓϨϛεJenkinsΛͬͱΓڈͬͨ2016/04/21 PHPBLT#4Jun Watanabe
View Slide
Jun Watanabe @rela1470• ͪͺʔ6• ORATTA, Inc Chief Engineer• http://rela.red/
݁
JenkinsΛcircleciʹ͠·ͨ͠!
͛͢ʔΑ͘ฉ͘
৭ʑͭ·͍ͮͨΓؤுͬͨͷͰ۪ஒΒ͍ͤͯͩ͘͞
෩࿊෦(੍ࣾ)िʹ3࣌ؒձٞࣨʹͬͯͻͨ͢Βۀվળɾٕज़ௐࠪORATTA Frontier TechͷଏশΒ͍͠
ࠓ2݄͔ΒCIվળΛͬͯ·ͨ͠
͍··Ͱͷվળ
͓ͬ͞Μͷإ͕ݏ
ঁମԽͰղܾࣗࣾͷσβΠφʔ͞Μʹॻ͍ͯΒ͍·ͨ͠ʘ(^o^)ʗ
σβΠϯ͕ݹष͍
http://aarjithn.github.io/jenkins-neo-theme/
ͦΕͰཷ·ΔJenkinsͷ
ҡ࣋͢ΔͨΊͷίετ͕ߴ͍
खಈͰͷόʔδϣϯΞοϓ
ϓϥάΠϯ45ݸ
PHPPEARͷϓϩμΫτࠩ
circleciಋೖͰͲ͏ͬͯղܾ͔ͨ͠
PEAR
Composerಋೖ
άάΔͱग़ͯ͘Δͭ{"require": {"pear-pear.php.net/PEAR" : "*","pear-pear.php.net/log" : "*","pear-pear.php.net/http_request2" : "*"},"repositories": [{"type": "pear","url": "http://pear.php.net"}]}
2016/03/03
2016/03/10
ಈ͔ͳ͘ͳͬͯͨ…
2016/3/4ϦϦʔεcomposer1.0.0-beta1༷มߋhttp௨৴NG͕σϑΥϧτઃఆʹ
Composerා͍
࣌ղܾࡦ͕Θ͔Βͳ͔ͬͨ
͖ͬ͞QiitaͰݟ͚ͭ·ͨ͠http://qiita.com/shinkuFencer/items/00c6cdbc0d0e0e081e38
httpΛڐͯ͠Β͏{"config": {"secure-http": false},"require": {"pear-pear.php.net/PEAR" : "*","pear-pear.php.net/log" : "*","pear-pear.php.net/http_request2" : "*"},"repositories": [{"type": "pear","url": "http://pear.php.net"}]}
ࠓճͲ͏͔ͨ͠
Packagist
Packagistʹ͋ΔͭΛ͏{"require": {"pear/pear": "dev-master","pear/log": "*@stable","pear/http_request2": "v2.3.0"},"require-dev": {"phpunit/phpunit": "4.8.23",}}
Θ͟Θ͟ΦϓγϣϯͰηΩϡϦςΟऑΊͳͯ͘ྑ͍ΠϚυΩͬΆ͍
PackagistͰ࣮ͯ͠ྑ͔ͬͨ
ྑ͔ͬͨ…
PHPͷόʔδϣϯ
7.0.4 / 7.0.0RC7 / 5.6.14 /5.6.5 / 5.6.2 / 5.5.21 / 5.5.16 /5.5.15 / 5.5.11 / 5.5.9 / 5.5.8 /5.5.7 / 5.5.3 / 5.5.2 / 5.5.0 /5.4.37 / 5.4.21 / 5.4.19 /5.4.18 / 5.4.15 / 5.4.14 /5.4.13 / 5.4.12 / 5.4.11 /5.4.10 / 5.4.9 / 5.4.8 / 5.4.7 /5.4.6 / 5.4.5 / 5.4.4 / 5.3.25 /5.3.20 / 5.3.10 / 5.3.3
circle.ymlͰόʔδϣϯࢦఆmachine:php:version: 5.5.21
gitͷஔ
1ϓϩδΣΫτ5ͭ͘Β͍ͷgitʹ͔Ε͍ͯΔ
ϓϩδΣΫτͷgitஔྫmulti [multi.git] //ࣗࣾϑϨʔϜϫʔΫ!systemɹ"addonɹ#ɹ!asuka [asuka.git] //ϓϩδΣΫτຖͷಠ࣮ࣗιʔεɹ#ɹɹ"master [asuka-master.git]ɹ//ΞΠςϜͷϚελʔઃఆɹ#ɹɹ!web [asuka-web.git]ɹ//ը૾Իɹ!lib[lib.git] //ࣗࣾϥΠϒϥϦ
αϒϞδϡʔϧԽͨ͠
αϒϞδϡʔϧԽ͔ͨͬͨ͠
ཧͰԥͬͨ(circle.yml)
git cloneͯࣗ͠Ͱஔ͠ͳ͓͢checkout:post:- "mkdir -p /tmp/yaml"- "git clone -b ${CIRCLE_BRANCH} [email protected]:oratta-inc/multi.git /home/ubuntu/multi"- "git clone -b ${CIRCLE_BRANCH} [email protected]:oratta-inc/lib.git /home/ubuntu/multi/system/lib"- "mkdir /home/ubuntu/multi/system/addon"test:pre:- "cp -a /home/ubuntu/${CIRCLE_PROJECT_REPONAME}/ /home/ubuntu/multi/system/addon/${CIRCLE_PROJECT_REPONAME}”- "git clone -b ${CIRCLE_BRANCH} [email protected]:oratta-inc/asuka-master.git /home/ubuntu/multi/system/addon/asuka/master”override:- "phpunit -c /home/ubuntu/multi/system/addon/${CIRCLE_PROJECT_REPONAME}/phpunit.xml -d memory_limit=512M"
ຖճ1͔Βgit clone
13ඵ͘Β͍
GitHubҙ֎ͱૣ͍
ΩϟογϡʹೖΕͯϦετΞΛࢼͨ͠Βٯʹ͘ͳͬͨ
ϏϧυνΣΠϯ
্ҐͷGit͕ߋ৽͞Εͨ߹શϓϩδΣΫτͷςετΛΒ͍ͤͨ
ςετʹޭͨ͠Βؔ࿈͢ΔϓϩδΣΫτΛAPIܦ༝Ͱ࣮ߦdeployment:develop:branch: developcommands:- curl -X POST https://circleci.com/api/v1/project/oratta-inc/rave/tree/develop?circle-token=$CHAIN_PROJECT_TOKEN- curl -X POST https://circleci.com/api/v1/project/oratta-inc/chloris/tree/develop?circle-token=$CHAIN_PROJECT_TOKEN- curl -X POST https://circleci.com/api/v1/project/oratta-inc/dark/tree/develop?circle-token=$CHAIN_PROJECT_TOKEN- curl -X POST https://circleci.com/api/v1/project/oratta-inc/bleach/tree/develop?circle-token=$CHAIN_PROJECT_TOKEN- curl -X POST https://circleci.com/api/v1/project/oratta-inc/asuka/tree/develop?circle-token=$CHAIN_PROJECT_TOKEN- curl -X POST https://circleci.com/api/v1/project/oratta-inc/sengoku/tree/develop?circle-token=$CHAIN_PROJECT_TOKEN- curl -X POST https://circleci.com/api/v1/project/oratta-inc/aqua/tree/develop?circle-token=$CHAIN_PROJECT_TOKEN
ແྉϓϥϯͩͱ1ίϯςφͷΈ
͍
ۚͰԥΔ?
Slack࿈ܞ
PHPͰಠ࣮ࣗ
σϑΥϧτͰ࿈ܞػೳ͋Γ
෭࢈
composerಋೖͰϩʔΧϧڥ͕౷Ұग़དྷͨ
PhpStormͰΧόϨοδͱ͔
·ͱΊ
ϨΨγʔγεςϜͰཧ(circle.yml)ͰͳΜͱ͔ͳΔ