2017/05/10 Android Testing Bootcamp#6にて発表した資料です
ฐࣾͷΞϓϦ։ൃCIڥ@yamacraft
View Slide
profile• @yamacraft (Wataru Yamada)• Mobile Application Engineer• LeadingMark, inc• team Y.G.E.(private)
دߘͯ͠·͢ʂ• ൃചதʂʂ• Android 7.0/7.1• Firebase (Android/iOS)• Analytics• Notifications
ฐࣾͷΞϓϦ։ൃͷCIڥʹ͍ͭͯ
લఏ• ΞϓϦΤϯδχΞগνʔϜʢ̍ʙ໊̎ʣ• ༧ࢉগͳ͍ʢ≠·ͬͨ͘ͳ͍ʣ• iOSͷCIߟྀʢಉҰԽ͓͖͍ͯͨ͠ʣ• ֎෦ͷWebαʔϏεʹཔΔબ͕Մೳ
։ൃϑϩʔʹ͍ͭͯ
Git Flow
Git Flowͷཧ༝• ϦϦʔενΣοΫதʹ։ൃ͕ਐΉՄೳੑ• ݱࡏͷϦϦʔε͍ͯ͠Δόʔδϣϯͷίʔυʹmasterͷ࠷৽ίʔυͱ͔ͨͬͨ͠• ςετྔ͕ബ͍ʢ͜͜ॏཁʣ• GitHub FlowςετʹΑΔ࣭νΣοΫ͕खް͍͜ͱʴଈϦϦʔε͕લఏͱ͍͏ೝࣝ
Git Flowͷ՝• GitHubͷPRͰreleasehotfixͷϚʔδΛ͢Δͷ͕໘• ʢϚʔδͷʣॱ൪ͱ͔ؒҧ͑ͯڐ༰͢Δ͍৺Ͱ…
Jenkins
Jenkinsͷ࠾ཧ༝• ͱ͍͏ΑΓWebαʔϏε͔mac miniΛ͏͔ͱ͍͏બ• iOSΞϓϦͷϏϧυߟྀ͢Δඞཁ͕͋ͬͨʢҰ൪ͷཧ༝ʣ• CircleCIͩͱʢ࠷খϓϥϯͰʣ݄$39• AppleCareͰϝϞϦੵΜͩmac mini͕100,000ԁ• ڥʢSDKAVDʣΛͪ͜ΒଆͰίϯτϩʔϧͰ͖Δ• Android͚ͩͳΒଞʹબࢶ͋Δͱࢥ͍·͢
JenkinsΛ͏࣌ͷҙ• Ͱ͖ΔݶΓଐਓੑΛഉআ͢Δ• δϣϒݶΓͳ͘γϯϓϧʹ• δϣϒͰΔ͜ͱɺઐ༻ͷγΣϧΛୟ͚ͩ͘ʹ͢Δ• γΣϧ༰ϦϙδτϦཧʹͳΔͷͰศར
Jenkinsͷ՝• ͦΕͰଐਓੑൈ͚͖Εͳ͍…• ಛʹϓϥάΠϯपΓͷઃఆ• ϝϯςίετ͕Ͳ͏ͯ͠ߴ͘ͳΓ͕ͪ• mac miniͦͷͷͷϝϯςߟྀ͕ඞཁ
ςετ
ݴ͏΄Ͳͳ͍ʂ
ͳͷͰɺݸਓతͳओுΛ
ςετͷࢦʹ͍ͭͯ• ެࣜͷςετΨΠυΛ९क͢Δ• https://developer.android.com/studio/test/index.html• ΧόϨοδ͕100%ʹͰ͖ΔͳΒɺͬͨํ͕ྑ͍• େࣄͳ͜ͱɺೖྗʹର͢Δग़ྗ݁Ռ• ςετίʔυͷϝϯςͰۤ͠Ή͙Β͍ͳΒɺਓͷखʹΑΔςετΛ৴ͯ͡ҕͶ͍ͨ…
ʢਓྗςετͰʣԿมΘͬͯͳ͍͜ͱΛνΣοΫ͢Δͷ͠ΜͲ͍ΑͶ
Appium͍͍ΑͶ…• SeleniumͷΞϓϦ൛• Τϛϡ͚ͩͰͳ͘ɺ࣮ػͰಈ࡞தͷΞϓϦʹରͯ͠ςετΛ࣮ߦͰ͖Δ• ͪͳΈʹಉ͡Α͏ͳUIςετπʔϧΛGoogleఏڙ͍ͯ͠ΔʢMonkeyRunnerʣ• ୯७ͳUIૢ࡞ςετͳΒAppiumͰͬͯ͠·͍͍ͨ
AppiumςετΘ͔ΒΜ…
Magic Podͱ• UIςετͷࣗಈԽαʔϏεʢΫϩʔζυβલʣ• σΟʔϓϥʔχϯάΛͬͯΩϟϓը૾͔ΒϘλϯͳͲΛೝࣝͯ͘͠ΕΔ• Appiumͷςετ͕؆୯ʹ࡞ΕΔʂʢ͍͍͘͢͝ʂʣ• ͜ͷษڧձͷୈ̐ճͰհ͞Ε͍ͯͨαʔϏεͰ͢• http://blog.trident-qa.com/2016/10/introduce_magic_pot/
αϯϓϧʢiOSΞϓϦʣ
MagicPodͰͬͯΔ͜ͱʗΓ͍ͨ͜ͱ• ਓͷखͰΔͱʮࡶʯʹͳΓ͕ͪͳςετΛஔ͖͍͑ͯ͘• ୯७ͳUIૢ࡞ʹΑΔը໘ભҠ• ʮมߋʹΑΔఆ֎ͷӨڹʯ͕ͳ͍͜ͱͷ֬ೝ
CIͷൃՐλΠϛϯά• feature/xxxʼdevelopɺhotfix ͷPRɺrelease/xxxͷߋ৽• ςετʴ֬ೝ༻APKͷϏϧυͱ• developͷߋ৽ʴຖேX࣌• Magic Podͷ࣮ࢪ• masterͷߋ৽• APKͷϏϧυͱɺGoogle PlayͷΞοϓϩʔυ
ࠓޙͷ՝• mac miniͷߏཧʗJenkinsͷόοΫΞοϓ• ςετͷްΈ͕૿͑ͨͱ͖ͷʮςετ͔͔࣌ؒΓ͗͢ʯ• ػछґଘͷࣄલνΣοΫࠓޙղܾͰ͖ͦ͏ʹͳ͍
ΑΖ͓͘͠ئ͍͠·͢ʂ
͓͠·͍