Slide 1

Slide 1 text

(JUIVCͱ5SBWJT$*Λ࢖ͬͨ
 ܧଓతͳλά෇͖ϦϦʔε !8BDLFS

Slide 2

Slide 2 text

w ࠷ۙࢼ͍ͯ͠ΔύοέʔδϦϦʔεͷํ ๏ʹ͍ͭͯ঺հ͠·͢ɻ

Slide 3

Slide 3 text

໨ඪ w (JUIVCͷϦϦʔεػೳͰύοέʔδΛϦϦʔε͍ͨ͠ w ։ൃ༻ͷϒϥϯνʹ͸ɺίϯύΠϧޙͷϑΝΠϧ΍ϥΠ ϒϥϦΛؚΊͨ͘ͳ͍ w ϦϦʔε༻ͷϒϥϯνʹ͸ɺίϯύΠϧલͷϑΝΠϧΛ ؚΊͨ͘ͳ͍

Slide 4

Slide 4 text

(JUIVCͷϦϦʔεػೳ w λάΛ෇͚Δͱ࣌ܥྻͰฒͿ w ϦϦʔεϖʔδ͔Β[JQϑΝΠϧΛμ΢ϯϩʔυͨ͠Γɺ౰֘ ίϛοτΛࢀরͰ͖Δ

Slide 5

Slide 5 text

$ git tag v1.0.0 $ git push origin v1.0.0

Slide 6

Slide 6 text

NBTUFSϒϥϯν CoffeeScript SASS HTML package.json bower.json !JavaScript !CSS !node_modules !bower_components ϩʔΧϧϦϙδτϦ ! gitignored ྫ͑͹8FC։ൃͷϦϙδτϦ w ։ൃ؀ڥ͕(SVOUɺ(VMQɺͦΕΒͷϓϥάΠϯͳ ͲͷOQNΛؚΉ w ΫϥΠΞϯταΠυͷϥΠϒϥϦ͸#PXFSͰ؅ཧ w $P⒎FF4DSJQUɾ4"44͔Β+BWB4DSJQUɾ$44Λ ίϯύΠϧ w FUD w ίϯύΠϧޙͷϑΝΠϧ͸HJUJHOPSF

Slide 7

Slide 7 text

ίϯύΠϧΛཁ͢ΔϑΝΠϧΛؚΉ৔߹ $P⒎FF4DSJQUɺ5ZQF4DSJQUɺ
 4"44ɺ4$44ɺ+BEFɺ)BNM ֎෦ͷϥΠϒϥϦʹґଘ͢Δ৔߹ OQNɺ#PXFSɺ$PNQPTFSɺ3VCZ(FNT

Slide 8

Slide 8 text

$ git tag v1.0.x $ git push origin v1.0.x $ git diff —name-status master v1.0.x M HTML M CoffeeScript M SASS M package.json M bower.json ͦͷ··λάΛϓογϡ͢Δͱ w ະίϯύΠϧ w ༨ܭͳϑΝΠϧΛؚΉ

Slide 9

Slide 9 text

ϦϦʔεϖʔδ͔Β͸ ίϯύΠϧޙͷϑΝΠϧͷΈΛ഑෍͍ͨ͠ +BWB4DSJQUɺ$44ɺ)5.-ɺόϯυϧ͞ΕͨϥΠϒϥϦ $ git tag v1.0.x $ git push origin v1.0.x $ git diff —name-status master v1.0.x # ๬·͍ࠩ͠෼ M HTML A JavaScript A CSS A node_modules A bower_components D CoffeeScript D SASS D package.json D bower.json

Slide 10

Slide 10 text

NBTUFSϒϥϯν NBTUFSϒϥϯν CoffeeScript SASS HTML package.json !bower.json !JavaScript !CSS !node_modules bower_components SFMFBTFϒϥϯν ϩʔΧϧϦϙδτϦ ϦϞʔτϦϙδτϦ CoffeeScript SASS HTML package.json bower.json HTML JavaScript CSS node_modules bower_components ! gitignored

Slide 11

Slide 11 text

$*αʔϏεΛ࢖࣮ͬͯݱͯ͠ΈΔ

Slide 12

Slide 12 text

w $*ʢܧଓతΠϯςάϨʔγϣϯʣࢧԉαʔϏεͷͭ w (JUIVCͰΑ͘ΈΔ͋ͷόοδ

Slide 13

Slide 13 text

ϦϞʔτʹϓογϡ ϓογϡʹ൐ͬͯൃՐ ࣗಈͰϏϧυɾςετ ΞΫηετʔΫϯΛ࢖ͬͯϦϦʔε $*αʔϏεʹͯ͠΄͍͜͠ͱ (JUIVC 5SBWJT$*

Slide 14

Slide 14 text

$ more ./.travis.yml language: node_js node: - 0.10 - 0.11 branches: only: - master # masterϒϥϯνʹ൓Ԡ - /^v?[0-9](\.[0-9])*/ # λάͷpushʹ΋൓Ԡ env: global: - GH_REF: github.com/user/repo.git - secure: “gWwMOgIBTvzbTN…” # GH_TOKEN # ଓ͘ 5SBWJT$*ͷઃఆ 

Slide 15

Slide 15 text

# ଓ͖ before_script: - npm install - npm run build # Ϗϧυ script: - npm test # ςετ after_success: - bash bin/deploy.sh # σϓϩΠ 5SBWJT$*ͷઃఆ 

Slide 16

Slide 16 text

$ more ./bin/deploy.sh set -e # Τϥʔ͕ग़ͨΒࢭΊΔ if [[ "false" != "$TRAVIS_PULL_REQUEST" ]]; then exit # ϓϧϦΫΤετʹରͯ͠͸σϓϩΠ͠ͳ͍ elif ! [[ "master" == "$TRAVIS_BRANCH" ]]; then if [[ "" == "$TRAVIS_TAG" ]]; then exit # ϚελʔϒϥϯνҎ֎Ͱλά͕ͳ͍࣌σϓϩΠ͠ͳ͍ fi fi # ଓ͘ σϓϩΠ༻γΣϧεΫϦϓτ  σϓϩΠํ๏͸pSFHPCZKQ͞ΜͷهࣄΛࢀߟʹ͠·ͨ͠ɻ

Slide 17

Slide 17 text

# ଓ͖ rm -rf .git # gitͷϑΥϧμΛશফڈ echo "CSS CoffeeScript package.json bower.json" > .gitignore # ෆཁͳϑΝΠϧΛignore # =====͜͜·ͰͰ׬શͳύοέʔδ͕׬੒===== # Travis CIଆͰͷgitͷઃఆ git init git config user.name "user" git config user.email “[email protected]" # ଓ͘ σϓϩΠ༻γΣϧεΫϦϓτ 

Slide 18

Slide 18 text

# ଓ͖ # ϦϦʔε༻ͷύοέʔδΛίϛοτ git add . git commit -m "Deploy from travis." # ଓ͘ σϓϩΠ༻γΣϧεΫϦϓτ 

Slide 19

Slide 19 text

# ଓ͖ # master΁ͷpushͩͬͨ৔߹ɺ'latest'ͱ͍͏branch΁ڧ੍push͢Δ # Τϥʔ࣌ʹΞΫηετʔΫϯ͕ग़ྗ͞Εͳ͍Α͏ʹ͢Δ if [[ "master" == "$TRAVIS_BRANCH" ]]; then git push --force --quiet \ "https://${GH_TOKEN}@${GH_REF}" master:latest \ > /dev/null 2>&1 fi # ଓ͘ σϓϩΠ༻γΣϧεΫϦϓτ 

Slide 20

Slide 20 text

# ଓ͖ # λάͷpushͩͬͨ৔߹ɺϦϦʔε಺༰Λڧ੍తʹॻ͖׵͑Δ if ! [[ "" == "$TRAVIS_TAG" ]]; then # tagΛ࡟আ git push --force --quiet \ "https://${GH_TOKEN}@${GH_REF}" “:$TRAVIS_TAG” \ > /dev/null 2>&1 # վΊͯtagΛpush git tag "$TRAVIS_TAG" git push --force --quiet --tag \ "https://${GH_TOKEN}@${GH_REF}" “$option" \ > /dev/null 2>&1 # Τϥʔ࣌ʹGH_TOKEN͕ग़ྗ͞Εͳ͍Α͏ʹ͢Δ fi σϓϩΠ༻γΣϧεΫϦϓτ 

Slide 21

Slide 21 text

HJUQVTIŠGPSDF Ͱ͖ͨ΋ͷ

Slide 22

Slide 22 text

HJUQVTIŠGPSDF ࠓޙ࣮ݱ͍ͨ͠ঢ়ଶ ϦϦʔεؒͷؔ܎Λ ਖ਼͍͠DPNNJUͰͭͳ͙

Slide 23

Slide 23 text

HJUQVTIŠGPSDF ࠓޙ࣮ݱ͍ͨ͠ঢ়ଶ ϦϦʔεؒͷؔ܎Λ ਖ਼͍͠DPNNJUͰͭͳ͙ HJUίϚϯυΛ͍͍ײ͡ʹୟ͚͹ͳΜͱ͔ͳΔʁ

Slide 24

Slide 24 text

·ͱΊ w 5SBWJT$*ͷίϯςφ͸ɺ௨ৗͷΫϥΠΞϯτϊʔ υͱಉ͡Α͏ʹૢ࡞Ͱ͖Δ w $*αʔϏεΛ࢖͑͹ɺςετɾϏϧυɾσϓϩΠɾ ϦϦʔεͳͲͷ໘౗ͳ࡞ۀΛࣗಈԽͰ͖Δ w HJUϦϙδτϦͷΑΓྑ͍ߏ੒ʹ͍ͭͯ͸ߟ͑த