Share
Embed
Get Started With Continuous Delivery through Bitrise and DeployGate
Matsuda Jumpei
July 30, 2019
Transcript
52 slides
-
Get Started with Continuous Delivery through Bitrise and DeployGate Bitrise
User Group Meetup #1 Jul. 30th -
ࣗݾհ Jumpei Matsuda / Daruma ▸ Software Engineer @DeployGate ▸
GitHub: jmatsu ▸ Twitter: red_fat_daruma ▸ ιϑτΣΞอकपΓʹؔ৺ ▸ ྉཧͱຊञͱϏʔϧ(ಛʹϕϧΪʔ)͕͖ ▸ ฐࣾTGIF Ͱ࣌ʑྉཧ୲ ▸ ञଂ८Γɺࠃ֎ͷ Brewery ८Γ͕झຯ 2 -
ࠓ͏ͷͰɺͦ͏͍͏ͷ͋ΔΜͩͳ֮ͬͯ͑ͯ͘ΕΕ ▸ ༻ݻఆURLΛൃߦͰ͖Δ ▸ ҙͷόʔδϣϯΛҙͷλΠϛϯάͰඥ ͚Մೳ ▸ ༻్ྫ ▸ QA
ରͷՌͷΈΛ1URL͔Β ▸ Feature branch ͝ͱʹ Distribution Λ࡞ ͠ɺReviewer ʹࢼͯ͠Β͏ ▸ ref: github://DroidKaigi/conference-app-2019 4 ϖʔδ -
✌ ࠓ͢͜ͱ ▸ ϞόΠϧʹ͓͚Δ Continuous Delivery ͱԿͳͷ͔ ▸ Continuous Integration/Deployment
ͱͷҧ͍ ▸ ελʔτΞοϓͰ0͔Β࢝ΊΔ CD ▸ ߏஙͨ͠ͱ͖ͷߟ͑ํ ▸ bitrise ͱ DeployGate Ͱ CD Λ࣮ݱͨ͠ͱ͖ͷྫ 5 -
ࠓ͞ͳ͍͜ͱ ▸ ߴԽ Tips ▸ ֤ Distribution Service ͷৄ͍͠ൺֱ ▸
طଘͷCDͷΤϯϋϯε ▸ DeployGate ͷࡉ͔͍͍ํ ▸ ref: https://devcenter.bitrise.io/deploy/deploy-apps-to-deploygate-from-bitrise/ 6 -
Continuous Delivery ͷఆٛ Continuous Delivery ▸ ࠷৽ͷϓϩμΫτʢRelease CandidateʣΛ࡞͠ଓ͚Δ͜ ͱ͕Ͱ͖ɺԿΒ͔ͷ߹ҙͷݩʹɺਓͷखΛܖػʹ͙͢ ProductionσϓϩΠͰ͖Δঢ়ଶ
▸ େ෦͕ࣗಈԽ͞Εͨ Deployment Pipeline ▸ Deployment Pipeline Λ௨ͯ͠ݟ͍ͯ͘ 7 -
Continuous Delivery ͷఆٛ Continuous Delivery ▸ ࠷৽ͷϓϩμΫτʢRelease CandidateʣΛ࡞͠ଓ͚Δ͜ ͱ͕Ͱ͖ɺԿΒ͔ͷ߹ҙͷݩʹɺਓͷखΛܖػʹ͙͢ ProductionσϓϩΠͰ͖Δঢ়ଶ
▸ େ෦͕ࣗಈԽ͞Εͨ Deployment Pipeline ▸ Deployment Pipeline Λ௨ͯ͠ݟ͍ͯ͘ 8 -
▸ ֤ Stage Λ࣮ߦ͢Δ͜ͱͰɺRC Λ࡞͍ͬͯ͘ Deployment Pipeline ͰݟΔ Continuous Delivery
Deployment Pipeline ྫ 9 UNIT TEST STATIC ANALYSIS UI TEST BUILD ACCEPTANCE TEST PRODUCTION FARM QA, PUBLIC BETA Increase Product Quality/Reliability Send feedback Approved! -
▸ ֤ Stage Λ࣮ߦ͢Δ͜ͱͰɺRC Λ࡞͍ͬͯ͘ 10 UNIT TEST STATIC ANALYSIS
UI TEST BUILD ACCEPTANCE TEST PRODUCTION FARM QA, PUBLIC BETA Increase Product Quality/Reliability Send feedback Approved! Deployment Pipeline ͰݟΔ Continuous Delivery Deployment Pipeline ྫ -
▸ ֤ Stage Λ࣮ߦ͢Δ͜ͱͰɺRC Λ࡞͍ͬͯ͘ 11 UNIT TEST STATIC ANALYSIS
UI TEST BUILD ACCEPTANCE TEST PRODUCTION FARM QA, PUBLIC BETA Increase Product Quality/Reliability Send feedback Approved! Deployment Pipeline ͰݟΔ Continuous Delivery Deployment Pipeline ྫ -
▸ ͜ͷྲྀΕΛ܁Γฦ͍ͯ͘͜͠ͱͰɺ࣭ͱ৴པΛ্͛Δ 12 UNIT TEST STATIC ANALYSIS UI TEST BUILD
ACCEPTANCE TEST PRODUCTION FARM QA, PUBLIC BETA Increase Product Quality/Reliability Send feedback Approved! Deployment Pipeline ͰݟΔ Continuous Delivery Deployment Pipeline ྫ -
▸ ͜ͷྲྀΕΛ܁Γฦ͍ͯ͘͜͠ͱͰɺ࣭ͱ৴པΛ্͛Δ 13 UNIT TEST STATIC ANALYSIS UI TEST BUILD
ACCEPTANCE TEST PRODUCTION FARM QA, PUBLIC BETA Increase Product Quality/Reliability Send feedback Approved! Deployment Pipeline ྫ Deployment Pipeline ͰݟΔ Continuous Delivery -
▸ ͜ͷྲྀΕΛ܁Γฦ͍ͯ͘͜͠ͱͰɺ࣭ͱ৴པΛ্͛Δ 14 UNIT TEST STATIC ANALYSIS UI TEST BUILD
ACCEPTANCE TEST PRODUCTION FARM QA, PUBLIC BETA Increase Product Quality/Reliability Send feedback Approved! Deployment Pipeline ͰݟΔ Continuous Delivery Deployment Pipeline ྫ -
15 UNIT TEST STATIC ANALYSIS UI TEST BUILD ACCEPTANCE TEST
PRODUCTION FARM QA, PUBLIC BETA Increase Product Quality/Reliability Send feedback Approved! ▸ ͳΜΒ͔ͷ߹ҙͷݩʹɺRC Λ Production σϓϩΠ Deployment Pipeline ͰݟΔ Continuous Delivery Deployment Pipeline ྫ -
▸ RC Λ Production खಈͰσϓϩΠग़དྷΔঢ়ଶ·ͰࣗಈԽ Continuous Delivery ͱʁ 16 UNIT
TEST STATIC ANALYSIS UI TEST BUILD ACCEPTANCE TEST PRODUCTION FARM QA, PUBLIC BETA Increase Product Quality/Reliability Send feedback Approved! Deployment Pipeline ͰݟΔ Continuous Delivery -
▸ ࣗಈԽ͞ΕΔൣғ ▸ ৽͍͠มߋͷݕূ ʙ Production σϓϩΠͷલ४උ ▸ ϞόΠϧ։ൃͷ߹ɺDelivery ର
Archive ▸ ࣮ߦڥͷϏϧυͳͲඞཁͳ͍ ▸ νʔϜαΠζʹؔΘΒͣɺૣ͍ஈ֊Ͱ Continuous Delivery Λ࣮ݱͯ͠ ͓͘ͱྑ͍ ▸ ͳͥ Continuous Integration Continuous Deployment Ͱͳ͍ͷ͔ 17 Deployment Pipeline ͰݟΔ Continuous Delivery Continuous Delivery ͱʁ -
▸ ࣗಈԽ͞ΕΔൣғ ▸ ৽͍͠มߋͷݕূ ʙ Production σϓϩΠͷલ४උ ▸ ϞόΠϧ։ൃͷ߹ɺDelivery ର
Archive ▸ ࣮ߦڥͷϏϧυͳͲඞཁͳ͍ ▸ νʔϜαΠζʹؔΘΒͣɺૣ͍ஈ֊Ͱ Continuous Delivery Λ࣮ݱͯ͠ ͓͘ͱྑ͍ ▸ ͳͥ Continuous Integration Continuous Deployment Ͱͳ͍ͷ͔ 18 Deployment Pipeline ͰݟΔ Continuous Delivery Continuous Delivery ͱʁ -
▸ ৽͍͠มߋΛݕূ͢Δ Stages ͕ࣗಈԽ͞Εͨঢ়ଶ Continuous Integration 19 UNIT TEST STATIC
ANALYSIS UI TEST BUILD ACCEPTANCE TEST PRODUCTION FARM QA, PUBLIC BETA Increase Product Quality/Reliability Send feedback Approved! Deployment Pipeline ͰݟΔ Continuous Integration -
Continuous Integration Ͱͳ͍ཧ༝ ▸ ଞ։ൃऀଞεςʔΫϗϧμʔ͕มߋͷݕূΛͮ͠Β͍ ▸ Ϗϧυ͠͠ɺखͰՌΛμϯϩʔυɾɾɾ ▸ Release Candidate
Λ࡞Δ Stage ఆٛͷ֎ʹ͋Δ ▸ Continuous Integration ͕͋Δ => ϦϦʔεͰ͖Δϓϩμ Ϋτʹͳ͍ͬͯΔ Γཱͨͳ͍ 20 Deployment Pipeline ͰݟΔ Continuous Integration -
▸ RC ͕Ͱ͖ɺProduction σϓϩΠ͢Δ·Ͱ͕શࣗಈ Continuous Deployment 21 UNIT TEST STATIC
ANALYSIS UI TEST BUILD ACCEPTANCE TEST PRODUCTION FARM QA, PUBLIC BETA Increase Product Quality/Reliability Send feedback Automated Deployment Pipeline ͰݟΔ Continuous Deployment -
Continuous Deployment Ͱͳ͍ཧ༝ ▸ қߴ : ߴ৴པͳࣗಈςετϞχλϦϯάͷΈ ▸ ఆٛతʹɺਓʹΑΔQAͳͲ͕ൣғ֎ ▸
Backend ͷ։ൃͱ໌Β͔ʹࣄ͕ҟͳΔ໘ ▸ Production ʹσϓϩΠ == ϢʔβʔΞοϓσʔτඞਢ ▸ ߴස͗ͯ͢ΞϯΠϯετʔϧ͞ΕͨΒҙຯ͕ͳ͍ ▸ ݹ͍όʔδϣϯ͕͜ͷੈʹऔΓ͞ΕΔ͜ͱલఏ ▸ ϦϦʔεϊʔτͲ͏͢Δ etc. 22 Deployment Pipeline ͰݟΔ Continuous Deployment -
খٳࢭ ▸ ͜͜·Ͱ ▸ ͳʹ͕/ͳͥ Continuous Delivery ͳͷ͔ ▸ ͔͜͜Β
▸ Ͳ͏ͬͯ Delivery ͷ෦Λߏங͍͔ͯ͘͠ 23 -
Delivery ઌΛܾΊΔઓུ ͲͷαʔϏεΛͬͯ͢Δ͔ ▸ Delivery ઌʮ୭͕Πϯετʔϧ͢Δͷ͔ʯʹґଘ ▸ αʔϏεͷཁٻ ▸ IT
Ϧςϥγʔʹؔ͢Δࣝ ▸ αʔϏεͨͪ ▸ Play Store Internal Tracks, Internal app sharing, Test Flight, DeployGate, Fabric beta, Updraft, CI/CD services like bitrise, any storage services, etc. 24 -
e.g. ΤϯδχΞ QAνʔϜͷཁٻ 25 Public Beta Testers Sales Directors QAs
Designers Engineers ‣উखʹ։ൃதͷόʔδϣϯΛ৮ͬͯόάใࠂ͠ͳ͍Ͱ΄͠ ͍ ‣ ϝϯόʔཧ͍ͨ͠ ‣ ͷͨͼʹૢ࡞ͨ͘͠ͳ͍ ‣ ΊΜͲ͍͘͞ͷͰউखʹͬͯ΄͍͠ ‣ۓٸͷߴ͘ͳ͍ใࠂདྷͯ΄͘͠ͳ͍ ‣ લͷόʔδϣϯͷڍಈΛݟ͍ͨ ‣ όʔδϣϯ͝ͱʹ͔Γ͍ࣝ͢ผࢠ͕ཉ͍͠ ‣ QAલʹ͍͍ͪͪΤϯδχΞ͔Β Binary ΛΘͣʹελʔτ͍ͨ͠ Delivery ઌΛܾΊΔઓུ -
e.g. σΟϨΫλʔӦۀνʔϜͷཁٻ 26 Public Beta Testers Sales Directors QAs Designers
Engineers ‣ ϦϦʔε͞ΕͯΔΞϓϦ͕ݟ͍ͨ ‣ ৽ػೳͷڍಈ͕ݟ͍ͨ ‣ ࠒ͔Β Dogfooding ͍ͨ͠ ‣ ҆ఆͯ͠ಈ͘ͷ͕৮Γ͍ͨ ‣ ΠϯετʔϧʹखؒऔΓͨ͘ͳ͍ ‣ ະެ։৽ػೳͷചΓࠐΈ͕͍ͨ͠ Delivery ઌΛܾΊΔઓུ -
e.g. ΞϓϦΛΠϯετʔϧ͢Δؾ֓ 27 Public Beta Testers Sales Directors QAs Designers
Engineers ૉૣ͘ҙͷ൛Λ Πϯετʔϧ͍ͨ͠ ศརػೳ͕ཉ͍͠ ҆ఆͯ͠ RC Λ Πϯετʔϧ͍ͨ͠ खؒগͳ͘ɺ ৴པͰ͖Δݩ͔Β Πϯετʔϧ͍ͨ͠ Functionality of Distribution service Easy Complexity Delivery ઌΛܾΊΔઓུ -
ͲͷαʔϏε͕ྑͦ͞͏͔? (ྫ) 28 Public Beta Testers Sales Directors QAs Designers
Engineers DeployGate,Fabric beta, bitrise, Internal app sharing, etc. DeployGate's distribution, Official Closed Tracks, etc. Official Internal Tracks, etc. Functionality of Distribution service Easy Complexity Delivery ઌΛܾΊΔઓུ -
ߏங͍ͯ͘͠ ▸ Delivery ઌΛܾΊΔ ▸ Branching model ͱ Step ▸
Step Workflow ͷઃఆΛ͢Δ ▸ खஈͷબఆɺӡ༻ܾΊɺͦΕʹ߹Θͤͨ CI/CD ͷηοτΞο ϓͷྲྀΕͰΔ 29 ελʔτΞοϓతࣄྫͰߟ͑ͯߏஙͯ͠ΈΔ -
͜ΜͳϓϩδΣΫτͰΓ·ͨ͠ ▸ ΞϓϦະϦϦʔε ▸ iOS/Android Λ XPlatform Ͱಉ࣌ʹ։ൃ ▸ Public
Beta Test ͷ༧ఆͳ͠ ▸ ։ൃऀҎ֎ͷ෦ͷਓؒ৮ΔՄೳੑ༗Γ ▸ Ӧۀ৮Δ 30 ελʔτΞοϓతࣄྫͰߟ͑ͯߏஙͯ͠ΈΔ -
▸ Delivery ઌΛܾΊΔ ▸ Branching model ͱ Step ▸ Step
Workflow ͷઃఆΛ͢Δ 31 ελʔτΞοϓతࣄྫͰߟ͑ͯߏஙͯ͠ΈΔ ߏங͍ͯ͘͠ -
εςʔΫϗϧμʔ͝ͱʹཁٻΛݟΔ 32 Sales Directors QAs Designers Engineers ૉૣ͘ҙͷ൛Λ Πϯετʔϧ͍ͨ͠ ҆ఆͯ͠
RC Λ Πϯετʔϧ͍ͨ͠ Functionality of Distribution service Easy Complexity ελʔτΞοϓతࣄྫͰߟ͑ͯߏஙͯ͠ΈΔ - Delivery ઌΛܾΊΔ Public Beta Testers ࠓճແ͠ νΣοΫର͕ ͔Γ͍͢ํ͕ ͍͍ -
ར༻αʔϏεΛબఆ 33 Public Beta Testers Sales Directors QAs Designers Engineers
bitrise distribution Official Closed Tracks Functionality of Distribution service Easy Complexity ࠓճແ͠ ελʔτΞοϓతࣄྫͰߟ͑ͯߏஙͯ͠ΈΔ - Delivery ઌΛܾΊΔ ϖʔδ -
▸ Delivery ઌΛܾΊΔ ▸ Branching model ͱ Step ▸ Step
Workflow ͷઃఆΛ͢Δ 34 ελʔτΞοϓతࣄྫͰߟ͑ͯߏஙͯ͠ΈΔ ߏங͍ͯ͘͠ -
Branching Model and Steps for Deployment 35 Feature branch Sales
Directors QAs Designers Engineers BUILD Staging branch BUILD merge Engineers Release branch BUILD merge Engineers BUILD tag Engineers ελʔτΞοϓతࣄྫͰߟ͑ͯߏஙͯ͠ΈΔ - Branching model ͱ Step -
36 Feature branch Sales Directors QAs Designers Engineers BUILD Staging
branch BUILD merge Engineers Release branch BUILD merge Engineers BUILD tag Engineers ελʔτΞοϓతࣄྫͰߟ͑ͯߏஙͯ͠ΈΔ - Branching model ͱ Step Branching Model and Steps for Deployment -
Deploy To Bitrise.io ▸ Bitrise ͷػೳΛ༗ޮԽ͢Δ Step ▸ Ϗϧυ͝ͱʹURL͕ൃߦ͞ΕΔ͕ɺ։ൃऀ༻ͳΒ͑͏Δ ▸
ಛʹ feature branch ʹ༗༻ ▸ ௨ ▸ ࢦఆͨ͠ϩʔϧϝʔϧΞυϨεʹϝʔϧ͕ૹΕΔ 37 ελʔτΞοϓతࣄྫͰߟ͑ͯߏஙͯ͠ΈΔ - Branching model ͱ Step -
38 Feature branch Sales Directors QAs Designers Engineers BUILD Staging
branch BUILD merge Engineers Release branch BUILD merge Engineers BUILD tag Engineers ελʔτΞοϓతࣄྫͰߟ͑ͯߏஙͯ͠ΈΔ - Branching model ͱ Step Branching Model and Steps for Deployment -
DeployGate Upload ▸ DeployGate ͔Β৴͢ΔͨΊͷฐࣾެࣜ Step ▸ ݻఆURLΛൃߦ͓ͯ͘͜͠ͱͰɺ࠶ͷඞཁ͕ͳ͍ ▸ ಛʹ
Staging/QA/Designer check ༻ͱͯ͠༗༻ ▸ ௨ ▸ iOS ͳΒϝʔϧɺAndroid ͳΒϓογϡ௨ ▸ ଞͷ௨ͷ߹ Step Λผ్ೖΕΔͷରԠ͕ඞཁ 39 ελʔτΞοϓతࣄྫͰߟ͑ͯߏஙͯ͠ΈΔ - Branching model ͱ Step -
40 Feature branch Sales Directors QAs Designers Engineers BUILD Staging
branch BUILD merge Engineers Release branch BUILD merge Engineers BUILD tag Engineers ελʔτΞοϓతࣄྫͰߟ͑ͯߏஙͯ͠ΈΔ - Branching model ͱ Step Branching Model and Steps for Deployment -
41 Feature branch Sales Directors QAs Designers Engineers BUILD Staging
branch BUILD merge Engineers Release branch BUILD merge Engineers BUILD tag Engineers ελʔτΞοϓతࣄྫͰߟ͑ͯߏஙͯ͠ΈΔ - Branching model ͱ Step Branching Model and Steps for Deployment -
Google Play Deploy ▸ Google Play Console ʹΞοϓϩʔυ͢Δ Step ▸
※ Console ͷ Owner ͷΈൃߦͰ͖Δ Service account ͕ඞཁ ▸ Internal Tracks ʹରԠ ▸ mapping ϑΝΠϧϦϦʔεϊʔτ͋͛ΒΕΔ 42 ελʔτΞοϓతࣄྫͰߟ͑ͯߏஙͯ͠ΈΔ - Branching model ͱ Step -
Deploy to iTunes Connect - Application Loader ▸ iTunes Connect
ʹΞʔΧΠϒΛΞοϓϩʔυ͢Δ͚ͩͷ Step ▸ ϦϦʔεϊʔτͳͲѻ͑Δ Step ผ ▸ ࠓճΞοϓϩʔυ͢Δૉࡐ͕ͳ͗ͨ͢͞ͷͰɺͪ͜Βʹ 43 ελʔτΞοϓతࣄྫͰߟ͑ͯߏஙͯ͠ΈΔ - Branching model ͱ Step -
▸ Delivery ઌΛܾΊΔ ▸ Branching model ͱ Step ▸ Step
Workflow ͷઃఆΛ͢Δ 44 ελʔτΞοϓతࣄྫͰߟ͑ͯߏஙͯ͠ΈΔ ߏங͍ͯ͘͠ -
Deploy To Bitrise.io ▸ ࠷ݶɺ௨ઌΛઃఆ͢ΕΑ͍ ▸ ҎԼൈਮ 45 Notify: User
Roles developers Enable public page for the App? FALSE Compress the artifacts into one file? FALSE ελʔτΞοϓతࣄྫͰߟ͑ͯߏஙͯ͠ΈΔ - Steps ͷઃఆΛ͢Δ -
DeployGate Upload ▸ Staging ༻ͷϖʔδ web ͔Βઌʹ࡞͓ͬͯ͘ͱྑ͍ ▸ {ANDROID,IOS}_DISTRIBUTION_KEY ͱͯ͠
App Env ▸ ҎԼൈਮ 46 ελʔτΞοϓతࣄྫͰߟ͑ͯߏஙͯ͠ΈΔ - Steps ͷઃఆΛ͢Δ Distribution Key (Staging) ${ANDROID,IOS}_DISTRIBUTION_KEY short message / release note $GIT_CLONE_COMMIT_HASH - $GIT_CLONE_COMMIT_MESSAGE_SUBJECT -
Google Play Deploy ▸ ࠷ݶɺΞοϓϩʔυͨ͠ binary ΛͲ͜ʹެ։͢Δ͔͚ͩઃఆ͢Δ 47 ελʔτΞοϓతࣄྫͰߟ͑ͯߏஙͯ͠ΈΔ -
Branching model ͱ Step Track (push to release branch) alpha Track (tag on release branch) rollout -
Workflow Setup Strategy ▸ ۪ʹ branching model ʹ߹ΘͤͯΓग़͢ 48 ελʔτΞοϓతࣄྫͰߟ͑ͯߏஙͯ͠ΈΔ
- Workflow ͷઃఆΛ͢Δ Feature branch BUILD Staging branch BUILD merge Release branch BUILD merge BUILD tag -
Workflow Setup Strategy ▸ ۪ʹ branching model ʹ߹ΘͤͯΓग़͢ ▸ release
branch ༻ͷ Workflow ͚ͩखಈ࣮ߦࢹʹೖΕׂͯ 49 ελʔτΞοϓతࣄྫͰߟ͑ͯߏஙͯ͠ΈΔ - Workflow ͷઃఆΛ͢Δ -
·ͱΊ ▸ CD ߏஙͷߟ͑ํ ▸ Πϯετʔϧ͢ΔਓͨͪͷଐੑɾཁٻΛߟ͑Δ ▸ Delivery ઌΛܾΊΔ ▸
Feature Branch => bitrise, Staging => DeployGate ϖʔδ ▸ Branching model Λܾఆ͢Δ ▸ Bitrise Workflow ͷ࡞Γํ ▸ ۪ʹ branching model ʹ߹ΘͤͯΓग़͢ ▸ ཉ͍͠ Step େମ͋ΔͷͰɺઌʹΓ͍ͨ͜ͱΛݻΊΔͱΑ͍ 50 ͓ΘΓʹ -
Thank You for Listening! ▸ Jumpei Matsuda / daruma ▸
Software Engineer @DeployGate ▸ GitHub: jmatsu ▸ Twitter: red_fat_daruma 52