Slide 1

Slide 1 text

© 2018 VASILY,Inc. "MFYBɺ"1,Λ഑෍ͯ͠ 2018/2/22 potatotips #48 @Horie1024

Slide 2

Slide 2 text

© 2018 VASILY,Inc. ࣗݾ঺հ w !)PSJF w 7"4*-: *OD w "OESPJEΤϯδχΞ w ϏʔϧɺࣗಈԽ޷͖

Slide 3

Slide 3 text

© 2018 VASILY,Inc. ೥݄;0;0508/΍8&"3ΛӡӦ͢Δ ελʔττΡσΠάϧʔϓʹࢀը ࢠձࣾԽ

Slide 4

Slide 4 text

© 2018 VASILY,Inc. ࠓ೔࿩͢͜ͱ w "1,Λ഑෍͢Δ"MFYB4LJMMʹ͍ͭͯ w "MFYB4LJMMͷઃఆ w "84-BNCEBͰͷ4LJMMΤϯυϙΠϯτͷ։ൃ w #JUSJTFͷઃఆ

Slide 5

Slide 5 text

© 2018 VASILY,Inc. Ϟνϕʔγϣϯ w "1,ͷ഑෍ํ๏ w खಈͰ"1,Λ4MBDL౳ʹΞοϓϩʔυͯ͠഑෍ w $*ͰಛఆͷϒϥϯνʹϚʔδͰ഑෍ w (SBEMFͷλεΫΛ࣮ߦͯ͠഑෍

Slide 6

Slide 6 text

© 2018 VASILY,Inc. Ϟνϕʔγϣϯ w Ի੠Ͱ"1,Λ഑෍ग़དྷͨΒศརͰ͸ʁ

Slide 7

Slide 7 text

© 2018 VASILY,Inc. "1,഑෍·ͰͷྲྀΕ

Slide 8

Slide 8 text

© 2018 VASILY,Inc. "1,഑෍·ͰͷྲྀΕ ᶃ ᶄ ᶅ ᶆ

Slide 9

Slide 9 text

© 2018 VASILY,Inc. "1,഑෍·ͰͷྲྀΕ ᶃ ᶄ ᶅ ᶆ ᶃ"MFYBͰͷԻ੠ೖྗͷड෇ͱॲཧ

Slide 10

Slide 10 text

© 2018 VASILY,Inc. "1,഑෍·ͰͷྲྀΕ ᶃ ᶄ ᶅ ᶆ ᶄ-BNCEBͰ#JUSJTFͷϏϧυΛτϦΨʔ

Slide 11

Slide 11 text

© 2018 VASILY,Inc. "1,഑෍·ͰͷྲྀΕ ᶃ ᶄ ᶅ ᶆ ᶅϏϧυ׬ྃޙ"1,ΛΞοϓϩʔυ

Slide 12

Slide 12 text

© 2018 VASILY,Inc. "1,഑෍·ͰͷྲྀΕ ᶃ ᶄ ᶅ ᶆ ᶆ%FQMPZ(BUFͰ"1,Λ഑෍

Slide 13

Slide 13 text

© 2018 VASILY,Inc. ᶃ"MFYBͰͷԻ੠ೖྗͷड෇ͱॲཧ w ʮϏοτϥΠζεΩϧʯͱͯ͠"MFYB4LJMMΛ࡞੒ w ʮ"MFYB ϏοτϥΠζͰ"1,Λ഑෍ͯ͠ʯͷܗͰ࢖͏

Slide 14

Slide 14 text

© 2018 VASILY,Inc. ᶃ"MFYBͰͷԻ੠ೖྗͷड෇ͱॲཧ w ʮϏοτϥΠζεΩϧʯͱͯ͠"MFYB4LJMMΛ࡞੒ w ʮ"MFYB ϏοτϥΠζͰ"1,Λ഑෍ͯ͠ʯͷܗͰ࢖͏ ݺͼग़໊͕͠ඞͣඞཁ

Slide 15

Slide 15 text

© 2018 VASILY,Inc. ᶃ"MFYBͰͷԻ੠ೖྗͷड෇ͱॲཧ ର࿩ϞσϧͰ-BNCEB΁ͷϦΫΤετʹඥ෇͚ ग़య"MFYBεΩϧ։ൃτϨʔχϯάγϦʔζୈճର࿩Ϟσϧͱ"MFYB4%,

Slide 16

Slide 16 text

© 2018 VASILY,Inc. ᶃ"MFYBͰͷԻ੠ೖྗͷड෇ͱॲཧ ϦΫΤετΠϯςϯτ໊ εϩοτ໊ ࠓճະ࢖༻ ग़య"MFYBεΩϧ։ൃτϨʔχϯάγϦʔζୈճର࿩Ϟσϧͱ"MFYB4%,

Slide 17

Slide 17 text

© 2018 VASILY,Inc. ᶃ"MFYBͰͷԻ੠ೖྗͷड෇ͱॲཧ w "1,Λ഑෍͢Δର࿩Ϟσϧ w ʮ"1,Λ഑෍ͯ͠ʯʮ"1,Λ഑෍ʯʮ"1,Λ഑ͬͯʯͰ %JTUSJCVUF"QLΠϯςϯτʹඥ෇͚

Slide 18

Slide 18 text

© 2018 VASILY,Inc. ᶃ"MFYBͰͷԻ੠ೖྗͷड෇ͱॲཧ ᶃʮ"MFYB ϏοτϥΠζͰ"1,Λ഑෍ͯ͠ʯ ᶄର࿩ϞσϧͰ%JTUSJCVUF"QLΠϯςϯτͱඥ෇͚ ᶅ%JTUSJCVUF"QLΠϯςϯτΛ-BNCEBΤϯυϙΠϯτʹϦΫΤετ ग़య"MFYBεΩϧ։ൃτϨʔχϯάγϦʔζୈճର࿩Ϟσϧͱ"MFYB4%, ᶃ ᶄ ᶅ

Slide 19

Slide 19 text

© 2018 VASILY,Inc. ᶄ-BNCEBͰ#JUSJTFͷϏϧυΛτϦΨʔ w #VJME5SJHHFS"1*Λར༻ w IUUQEFWDFOUFSCJUSJTFJPBQJCVJMEUSJHHFS

Slide 20

Slide 20 text

© 2018 VASILY,Inc. ᶄ-BNCEBͰ#JUSJTFͷϏϧυΛτϦΨʔ export const bitriseSkill = (event: Alexa.RequestBody, context: Alexa.Context) => { const alexa = Alexa.handler(event, context) alexa.registerHandlers({ 'DistributeApk': function () { request({ method:'post', url: `https://www.bitrise.io/app/${appSlug}/build/start.json`, headers: {"Content-Type": "application/json; charset=utf-8"}, json: true, body: { 'hook_info': { 'type': 'bitrise', 'api_token': apiToken }, 'build_params': { 'branch': 'master', 'workflow_id': 'deploy', 'commit_message': 'triggered from alexa' } } }, (error, response, body) => { let workflowId = body.triggered_workflow this.emit(':tell', `ϫʔΫϑϩʔΞΠσΟʔ${workflowId}ͰɺϏοτϥΠζͰͷϏϧυΛ։࢝͠·ͨ͠ɻϏϧυ͕׬ྃޙɺΤʔϐʔέʔΛ഑෍͠·͢ɻ`) }) } }) alexa.execute() }

Slide 21

Slide 21 text

© 2018 VASILY,Inc. ᶄ-BNCEBͰ#JUSJTFͷϏϧυΛτϦΨʔ export const bitriseSkill = (event: Alexa.RequestBody, context: Alexa.Context) => { const alexa = Alexa.handler(event, context) alexa.registerHandlers({ 'DistributeApk': function () { request({ method:'post', url: `https://www.bitrise.io/app/${appSlug}/build/start.json`, headers: {"Content-Type": "application/json; charset=utf-8"}, json: true, body: { 'hook_info': { 'type': 'bitrise', 'api_token': apiToken }, 'build_params': { 'branch': 'master', 'workflow_id': 'deploy', 'commit_message': 'triggered from alexa' } } }, (error, response, body) => { let workflowId = body.triggered_workflow this.emit(':tell', `ϫʔΫϑϩʔΞΠσΟʔ${workflowId}ͰɺϏοτϥΠζͰͷϏϧυΛ։࢝͠·ͨ͠ɻϏϧυ͕׬ྃޙɺΤʔϐʔέʔΛ഑෍͠·͢ɻ`) }) } }) alexa.execute() }

Slide 22

Slide 22 text

© 2018 VASILY,Inc. ᶄ-BNCEBͰ#JUSJTFͷϏϧυΛτϦΨʔ export const bitriseSkill = (event: Alexa.RequestBody, context: Alexa.Context) => { const alexa = Alexa.handler(event, context) alexa.registerHandlers({ 'DistributeApk': function () { request({ method:'post', url: `https://www.bitrise.io/app/${appSlug}/build/start.json`, headers: {"Content-Type": "application/json; charset=utf-8"}, json: true, body: { 'hook_info': { 'type': 'bitrise', 'api_token': apiToken }, 'build_params': { 'branch': 'master', 'workflow_id': 'deploy', 'commit_message': 'triggered from alexa' } } }, (error, response, body) => { let workflowId = body.triggered_workflow this.emit(':tell', `ϫʔΫϑϩʔΞΠσΟʔ${workflowId}ͰɺϏοτϥΠζͰͷϏϧυΛ։࢝͠·ͨ͠ɻϏϧυ͕׬ྃޙɺΤʔϐʔέʔΛ഑෍͠·͢ɻ`) }) } }) alexa.execute() }

Slide 23

Slide 23 text

© 2018 VASILY,Inc. ᶄ-BNCEBͰ#JUSJTFͷϏϧυΛτϦΨʔ export const bitriseSkill = (event: Alexa.RequestBody, context: Alexa.Context) => { const alexa = Alexa.handler(event, context) alexa.registerHandlers({ 'DistributeApk': function () { request({ method:'post', url: `https://www.bitrise.io/app/${appSlug}/build/start.json`, headers: {"Content-Type": "application/json; charset=utf-8"}, json: true, body: { 'hook_info': { 'type': 'bitrise', 'api_token': apiToken }, 'build_params': { 'branch': 'master', 'workflow_id': 'deploy', 'commit_message': 'triggered from alexa' } } }, (error, response, body) => { let workflowId = body.triggered_workflow this.emit(':tell', `ϫʔΫϑϩʔΞΠσΟʔ${workflowId}ͰɺϏοτϥΠζͰͷϏϧυΛ։࢝͠·ͨ͠ɻϏϧυ͕׬ྃޙɺΤʔϐʔέʔΛ഑෍͠·͢ɻ`) }) } }) alexa.execute() } "MFYB͔ΒϢʔβʔ΁ͷԠ౴

Slide 24

Slide 24 text

© 2018 VASILY,Inc. ᶄ-BNCEBͰ#JUSJTFͷϏϧυΛτϦΨʔ

Slide 25

Slide 25 text

© 2018 VASILY,Inc. ᶄ-BNCEBͰ#JUSJTFͷϏϧυΛτϦΨʔ

Slide 26

Slide 26 text

© 2018 VASILY,Inc. ᶅϏϧυ׬ྃޙ"1,ΛΞοϓϩʔυ EFQMPZXPSLqPXʹ4DSJQUTUFQΛ௥Ճ

Slide 27

Slide 27 text

© 2018 VASILY,Inc. ᶆ%FQMPZ(BUFͰ"1,Λ഑෍ Ξοϓϩʔυ͞Εͨ

Slide 28

Slide 28 text

© 2018 VASILY,Inc. σϞ

Slide 29

Slide 29 text

© 2018 VASILY,Inc. ·ͱΊ w "1,Λ഑෍͢Δ"MFYB4LJMMΛ࡞Δࣄ͕Ͱ͖ͨ w "MFYB͸ʮ"1,Λ഑෍ͯ͠ʯͷΑ͏ͳχονͳݴ༿ ΋ೝࣝͯ͘͠ΕΔ w "1,഑෍Ҏ֎΋৭ʑͱࢼ͍ͨ͠

Slide 30

Slide 30 text

© 2018 VASILY,Inc. ࢀߟࢿྉ w "MFYBεΩϧ։ൃτϨʔχϯά w IUUQTEFWFMPQFSBNB[PODPNKBBMFYBTLJMMTLJUUSBJOJOHCVJMEJOHBTLJMM w -BNCEBαϯϓϧίʔυ w IUUQTHJUIVCDPNIPSJFBMFYB@BOESPJE@EJTUSJCVUF@BQL

Slide 31

Slide 31 text

© 2018 VASILY,Inc. ͋Γ͕ͱ͏͍͟͝·ͨ͠