Slide 1

Slide 1 text

͍ͭ΋ͷQAΛ΋ͬͱָʹ͢Δ DeployGateͷ࢖͍ํ Yuki Fujisaki, DeployGate Inc. Ϋϥ΢υϞόΠϧϏϧυ/ςετ Meetup, Feb. 7, 2020

Slide 2

Slide 2 text

͜ͷ10෼ͷΰʔϧ • ࣮ػݕূͷϫʔΫϑϩʔΛվળ͢ΔώϯτΛڞ༗ • ΞϓϦͷCI/CD͢Δͱ͖ɺ഑৴ͷ࢓ํΛͪΐͬͱ޻෉͢Δͱ ࣮ػςετ͢Δਓ͕ΊͬͪΌ޾ͤʹͳΕΔ • Bitrise + DeployGate Ͱศརͳνʔτγʔτ

Slide 3

Slide 3 text

࣭໰ ΞϓϦ։ൃʹ͓͍ͯɺ ࣗಈϏϧυͱ഑෍αʔϏεΛ࢖͍ͬͯΔ

Slide 4

Slide 4 text

࣭໰ ΞϓϦ։ൃʹ͓͍ͯɺ ࣗಈϏϧυͱ഑෍αʔϏεΛ࢖͓ͬͯΓɺ ςελʔ͕ର৅Λؒҧ͏͜ͱͳ͘ ͙͢ʹݕূΛ։࢝Ͱ͖͍ͯΔ

Slide 5

Slide 5 text

ςετର৅ͷϏϧυɺ Ͳ͏ड͚౉ͯ͠͠Δʁ

Slide 6

Slide 6 text

ςετର৅ͷϏϧυɺͲ͏ड͚౉ͯ͠͠Δʁ Կ͔ࣾώΞϦϯάͯ͠Έͨ • QA༻ͷϏϧυΛ࡞͍ͬͯΔέʔε͕ଟ͍ • Slack΍νέοτͰϏϧυͷ൪߸Λ఻͍͑ͯΔ • ࣌ʑCIͷϏϧυ݁ՌͷURL͚ͩ఻͑ΒΕͯΔʢԿނ…ʣ

Slide 7

Slide 7 text

ड͚औΔଆͷ࡞ۀ Πϯετʔϧର৅ͷಛఆ • ൪߸Λ΋ͱʹɺର৅ͷϏϧυΛҰཡ͔ Β୳͢ • େਓ਺ͰCI࢖͏ͱ༷ʑͳछྨͷϏϧυ ͕ࠞ͟Δ • ։ൃϒϥϯνɺεςʔδϯά޲͖ɺ ϦϦʔε༻, etc.

Slide 8

Slide 8 text

ʮ͜ͷόʔδϣϯͰςετ͓ئ͍͠·͢ʯ • ԟʑʹ࣮ͯ͠ػͰ୳͠ग़͢ͷ͸໘౗ • ݕূ༻୺຤ʹ͸Slack΋ϝʔϧΞΧ΢ϯτ΋ೖ͍ͬͯͳ͍

Slide 9

Slide 9 text

ࠣࡉͳ͜ͱɺͩͱࢥΘΕ͕ͪ • ΞϓϦͷΠϯετʔϧ͸1೔ʹԿ౓΋܁Γฦ͠ߦ͏࡞ۀ • ಛʹϦϦʔε͕ഭΔͱ૿Ճ

Slide 10

Slide 10 text

DeployGate ʹ͓͚Δ౷ܭ • େ͖Ίͷاۀ: 1ΞϓϦʹ͖ͭ ݄ʹ਺ඦճ ͷΠϯετʔϧ • ϐʔΫ࣌͸݄5,000ճ௒έʔε΋ • ελʔτΞοϓͰ΋݄ʹ200ճ͙Β͍͸ී௨ • ͪͳΈʹฏۉ21Ͱதԝ஋͸4 (ແྉϢʔβʔؚΉ)

Slide 11

Slide 11 text

ྫ: ҙਤͤͣؒҧͬͨόʔδϣϯΛςετͯ͠͠·͍ɺ ख໭Γɺ࠶ݕূ • Τϥʔ཰1%ͩͱͯ͠΋݄ʹ਺ճʙ਺ेճ͸ϛεΔ • େن໛ʹͳΔ΄ͲɺϦϦʔε௚લʹͳΔ΄ͲɺϏϧυ͕૿͑ɺ Τϥʔ཰΋૿͑Δߏ଄

Slide 12

Slide 12 text

࣮ػݕূͷϫʔΫϑϩʔ

Slide 13

Slide 13 text

഑৴ج൫Λ੔͑Δͷ͸։ൃऀ͚ͩͲ • ࣮ࡍʹҰ൪࢖͍ͬͯΔͷ͸ςελʔ • खؒʹͳΔ͜ͱ͕͋ͬͯ΋ׂͱ૑ҙ޻෉ͰؤுͬͪΌ͏܏޲ • ՝୊͕͋ͬͯ΋ݟ͑ͮΒ͘ɺվળ͕ޙճ͠ʹͳΓ͕ͪ

Slide 14

Slide 14 text

ཁٻͷఆٛ ςετର৅ͷϏϧυΛؒҧΘͣɺ؆୯࣮֬ʹ ΠϯετʔϧՄೳͳ࢓૊Έ͕ཉ͍͠

Slide 15

Slide 15 text

DeployGateͷ৔߹

Slide 16

Slide 16 text

഑෍ϖʔδػೳ • ʮݻఆͷURLͰ೚ҙʹࢦఆͨ͠όʔδϣϯΛ഑৴͢Δػೳʯ • URL͸มߋͤͣʹର৅ϏϧυΛม͑Δ͜ͱ͕Մೳ • ϙΠϯτ: CIͱ૊Έ߹Θͤͯࣗಈతʹ࡞੒ɾߋ৽Ͱ͖Δ

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

ఏҊख๏ • Gitϒϥϯν͝ͱʹࣗಈతʹ഑෍ϖʔδΛ࡞Δ • ϒϥϯν͝ͱͷ࠷৽൛ΛΠϯετʔϧͰ͖ΔURL͕ಘΒΕΔ → https://deploygate.com/distributions/[ϋογϡ஋] • ଞͷϒϥϯνͷߋ৽ʹӨڹ͞Εͳ͍

Slide 19

Slide 19 text

໨ࢦ͢ͱ͜Ζ

Slide 20

Slide 20 text

ϒϥϯν͝ͱͷ࠷৽൛Λ खݩͰࠓ͙͢μ΢ϯϩʔ υ ✅ ୺຤ଆͰ೚ҙͷϒϥϯνΛબ୒ͯ͠ ΠϯετʔϧͰ͖Δ

Slide 21

Slide 21 text

Slack͔ΒϏϧυͷμ΢ϯϩʔυ΁ભҠ ✅ DownloadϘλϯͰϒϥϯν͝ͱͷURLΛ։͚Δ

Slide 22

Slide 22 text

ೋ࣍ݩόʔίʔυ͔Β ͙࣮͢ػΠϯετʔϧ ✅ ࠷ۙͷiPhone/Android͸ඪ४ͷΧϝϥ ͰಡΊΔ(௥ՃΞϓϦෆཁ)

Slide 23

Slide 23 text

࢖͏΋ͷ DeployGate Upload API ͷ distribution_name Φϓγϣϯ

Slide 24

Slide 24 text

Bitriseͷ৔߹ DeployGate Upload εςοϓΛ࢖͏

Slide 25

Slide 25 text

Bitriseͷ৔߹ DeployGate: Distribution Name ʹ $BITRISE_GIT_BRANCH Λઃఆ

Slide 26

Slide 26 text

curlͷ৔߹ Ҿ਺Λ௥Ճ -F distribution_name="$(git symbolic-ref --short HEAD)" • gitͷݱࡏͷϒϥϯν໊Λ౉͢

Slide 27

Slide 27 text

͜Ε͚ͩ • ϒϥϯν͝ͱͷ഑෍ϖʔδ࡞੒ • DeployGateΞϓϦ͔Βબ΂Δঢ়ଶ • ͦΕͧΕͷϒϥϯνͷ࠷৽൛Λμ΢ ϯϩʔυͰ͖Δ

Slide 28

Slide 28 text

ීஈݟͯΔ৔ॴʹಋઢΛஔ͘

Slide 29

Slide 29 text

URLΛSlackʹ௨஌ • Upload API͔ΒฦΔJSON͔Β഑෍ϖʔδͷURLΛऔಘ • SlackʹϦϯΫΛૹΔ

Slide 30

Slide 30 text

Bitrise Λྫʹ঺հ Script ͱ Send a Slack Message εςοϓΛ௥Ճ

Slide 31

Slide 31 text

Script εςοϓ ݁ՌͷJSON͔Β഑෍ϖʔδURLΛ؀ڥม਺ʹηοτ ruby -rjson -e \ 'print JSON.parse(ENV["DEPLOYGATE_UPLOAD_APP_STEP_RESULT_JSON"])["results"]["distribution"]["url"]' | \ envman add --key DEPLOYGATE_DISTRIBUTION_URL

Slide 32

Slide 32 text

Send a Slack message εςοϓ (1/2) • ·ͣ͸ Slack ଆͰ Webhook URL Λऔಘ • Custom Integrations → Incoming WebHooks Ͱ௥Ճ • URL Λ Slack Webhook URL ʹઃఆ

Slide 33

Slide 33 text

Send a Slack message εςοϓ (2/2) • A list of buttons attached to the message as link buttons ʹ Download|${DEPLOYGATE_DISTRIBUTION_URL} Λ௥Ճ

Slide 34

Slide 34 text

͓΋ΉΖʹBuildΛ࣮ߦ͢Δͱ

Slide 35

Slide 35 text

͓͢͢Ίઃఆ

Slide 36

Slide 36 text

No content

Slide 37

Slide 37 text

ϙΠϯτ • Revision, Version Code, Version Name, Icon΋ೖΕͱ͘ • ϛε͕ݮΔ • QRίʔυ΋Slack্ʹग़ͯ͠͠·͏ • खؒΛݮΒ͢

Slide 38

Slide 38 text

νʔτγʔτ จࣈࡉ͔͍ͷͰPDFμ΢ϯϩʔυͯ͠ίϐϖ͍ͯͩ͘͠͞

Slide 39

Slide 39 text

Script εςοϓ #!/usr/bin/env bash set -ex json_parse() { ruby -rjson -e "print JSON.parse(ENV['DEPLOYGATE_UPLOAD_APP_STEP_RESULT_JSON'])$1" } json_to_env() { json_parse $1 | envman add --key $2 } json_to_env '["results"]["distribution"]["url"]' DEPLOYGATE_DISTRIBUTION_URL json_to_env '["results"]["revision"]' DEPLOYGATE_REVISION json_to_env '["results"]["icon"]' DEPLOYGATE_APP_ICON json_to_env '["results"]["version_code"]' DEPLOYGATE_VERSION_CODE json_to_env '["results"]["version_name"]' DEPLOYGATE_VERSION_NAME echo -n "https://deploygate.com/qr?size=200&data=$(json_parse '["results"]["distribution"]["url"]')" \ | envman add --key DEPLOYGATE_DISTRIBUTION_URL_QR

Slide 40

Slide 40 text

Send a Slack message εςοϓ 1/3 • URL to an image to use as the icon for the message → $DEPLOYGATE_APP_ICON • the bot's username for the message → $BITRISE_APP_TITLE • A URL to an image file that will be displayed inside the attachment → $DEPLOYGATE_DISTRIBUTION_URL_QR

Slide 41

Slide 41 text

Send a Slack message εςοϓ 2/3 • A list of fields to be displayed in a table inside the attachmentInsert variable ↓ Branch|${BITRISE_GIT_BRANCH} Version Name|${DEPLOYGATE_VERSION_NAME} Version Code|${DEPLOYGATE_VERSION_CODE} DeployGate Revision|#${DEPLOYGATE_REVISION}

Slide 42

Slide 42 text

Send a Slack message εςοϓ 3/3 • A list of buttons attached to the message as link buttons ↓ View Build|${BITRISE_BUILD_URL} Download|${DEPLOYGATE_DISTRIBUTION_URL}

Slide 43

Slide 43 text

ޮՌ • ॳճΠϯετʔϧ • ೋ࣍ݩόʔίʔυ →࣮֬ʹର৅Λ։͚Δ • ߋ৽ͷΠϯετʔϧ • ඞཁͳϒϥϯνͷΈ௨஌Λड͚औΔ →ߋ৽ର৅Λؒҧ͑ͳ͍

Slide 44

Slide 44 text

ޮՌ • ςετର৅ͷϏϧυΛ୳͢ख͕ؒෆཁʹͳΔ • ؒҧ͑Α͏͕ͳ͘ͳΔ • ϦϦʔεϏϧυ༻ͷϒϥϯνΛ࡞੒͓ͯ͘͠ͱɺ ࠷ޙͷϦϦʔε൛͔ΒͷΞοϓσʔτͷ֬ೝ΋खܰ

Slide 45

Slide 45 text

·ͱΊ • ΞϓϦͷCD͸ɺ഑৴Ͱ͖ͨΒऴΘΓ͡Όͳ͍Α • Πϯετʔϧ΍੾Γସ͑ͷखॱ΋࠷దԽ͠Α͏ • ςετର৅Λ໎ΘͣΠϯετʔϧͰ͖Δ؀ڥ͸؆୯ʹ੔͏ • ։ൃதͷϏϧυΛϒϥϯνͰࣗಈ෼ྨͯ͠ΞΫηε͠΍͘͢ • DeployGateͷ഑෍ϖʔδศརͳͷͰ࢖ͬͯͶ

Slide 46

Slide 46 text

࡞Δਓͱ࢖͏ਓΛ΋ͬͱۙ͘ʹ