弊社のアプリ開発CI環境

 弊社のアプリ開発CI環境

2017/05/10 Android Testing Bootcamp#6にて発表した資料です

Ad37f739bffa0e38c8461e452cb3a489?s=128

yamacraft

May 10, 2017
Tweet

Transcript

  1. ฐࣾͷΞϓϦ։ൃCI؀ڥ @yamacraft

  2. profile • @yamacraft (Wataru Yamada) • Mobile Application Engineer •

    LeadingMark, inc • team Y.G.E.(private)
  3. None
  4. None
  5. دߘͯ͠·͢ʂ • ൃചதʂʂ • Android 7.0/7.1 • Firebase (Android/iOS) •

    Analytics • Notifications
  6. ฐࣾͷΞϓϦ։ൃͷ CI؀ڥʹ͍ͭͯ

  7. લఏ • ΞϓϦΤϯδχΞগ਺νʔϜʢ̍ʙ໊̎ʣ • ༧ࢉ΋গͳ͍ʢ≠·ͬͨ͘ͳ͍ʣ • iOSͷCI΋ߟྀʢಉҰԽ͓͖͍ͯͨ͠ʣ • ֎෦ͷWebαʔϏεʹཔΔબ୒͕Մೳ

  8. None
  9. ։ൃϑϩʔʹ͍ͭͯ

  10. Git Flow

  11. Git Flowͷཧ༝ • ϦϦʔενΣοΫதʹ΋։ൃ͕ਐΉՄೳੑ • ݱࡏͷϦϦʔε͍ͯ͠Δόʔδϣϯͷίʔυʹ masterͷ࠷৽ίʔυͱ͔ͨͬͨ͠ • ςετྔ͕ബ͍ʢ͜͜ॏཁʣ •

    GitHub Flow͸ςετ౳ʹΑΔ඼࣭νΣοΫ͕ख ް͍͜ͱʴଈϦϦʔε͕લఏͱ͍͏ೝࣝ
  12. Git Flowͷ՝୊ • GitHubͷPRͰrelease΍hotfixͷϚʔδΛ͢Δ ͷ͕΍΍໘౗ • ʢϚʔδͷʣॱ൪ͱ͔ؒҧ͑ͯ΋ڐ༰͢Δ޿ ͍৺Ͱ…

  13. Jenkins

  14. Jenkinsͷ࠾୒ཧ༝ • ͱ͍͏ΑΓWebαʔϏε͔mac miniΛ࢖͏͔ͱ͍͏બ୒ • iOSΞϓϦͷϏϧυ΋ߟྀ͢Δඞཁ͕͋ͬͨʢҰ൪ͷཧ༝ʣ • CircleCIͩͱʢ࠷খϓϥϯͰʣ݄$39 • AppleCare෇ͰϝϞϦੵΜͩmac

    mini͕໿100,000ԁ • ؀ڥʢSDK΍AVD౳ʣΛͪ͜ΒଆͰίϯτϩʔϧͰ͖Δ • Android͚ͩͳΒଞʹ΋બ୒ࢶ͸͋Δͱࢥ͍·͢
  15. JenkinsΛ࢖͏࣌ͷ஫ҙ఺ • Ͱ͖ΔݶΓଐਓੑΛഉআ͢Δ • δϣϒ͸ݶΓͳ͘γϯϓϧʹ • δϣϒͰ΍Δ͜ͱ͸ɺઐ༻ͷ γΣϧΛୟ͚ͩ͘ʹ͢Δ • γΣϧ಺༰΋ϦϙδτϦ؅ཧ

    ʹͳΔͷͰศར
  16. Jenkinsͷ՝୊ • ͦΕͰ΋ଐਓੑ͸ൈ͚͖Εͳ͍… • ಛʹϓϥάΠϯपΓͷઃఆ • ϝϯςίετ͕Ͳ͏ͯ͠΋ߴ͘ͳΓ͕ͪ • mac miniͦͷ΋ͷͷϝϯς΋ߟྀ͕ඞཁ

  17. ςετ

  18. ݴ͏΄Ͳͳ͍ʂ

  19. ͳͷͰɺݸਓతͳओுΛ

  20. ςετͷࢦ਑ʹ͍ͭͯ • ެࣜͷςετΨΠυΛ९क͢Δ • https://developer.android.com/studio/test/index.html • ΧόϨοδ͕100%ʹͰ͖ΔͳΒɺ΍ͬͨํ͕ྑ͍ • େࣄͳ͜ͱ͸ɺೖྗʹର͢Δग़ྗ݁Ռ •

    ςετίʔυͷϝϯςͰۤ͠Ή͙Β͍ͳΒɺਓͷखʹ ΑΔςετΛ৴ͯ͡ҕͶ͍ͨ…
  21. ʢਓྗςετͰʣ Կ΋มΘͬͯͳ͍͜ͱΛ νΣοΫ͢Δͷ͸ ͠ΜͲ͍ΑͶ

  22. Appium͍͍ΑͶ… • SeleniumͷΞϓϦ൛ • Τϛϡ͚ͩͰͳ͘ɺ࣮ػͰಈ࡞தͷΞϓϦʹରͯ͠ς ετΛ࣮ߦͰ͖Δ • ͪͳΈʹಉ͡Α͏ͳUIςετπʔϧΛGoogle΋ఏڙ͠ ͍ͯΔʢMonkeyRunnerʣ •

    ୯७ͳUIૢ࡞ςετͳΒAppiumͰ΍ͬͯ͠·͍͍ͨ
  23. AppiumςετΘ͔ΒΜ…

  24. None
  25. Magic Podͱ͸ • UIςετͷࣗಈԽαʔϏεʢΫϩʔζυβલʣ • σΟʔϓϥʔχϯάΛ࢖ͬͯΩϟϓը૾͔ΒϘλϯͳͲΛೝࣝ ͯ͘͠ΕΔ • Appiumͷςετ͕؆୯ʹ࡞ΕΔʂʢ͍͍͘͢͝ʂʣ •

    ͜ͷษڧձͷୈ̐ճͰ঺հ͞Ε͍ͯͨαʔϏεͰ͢ • http://blog.trident-qa.com/2016/10/ introduce_magic_pot/
  26. αϯϓϧʢiOSΞϓϦʣ

  27. MagicPodͰ΍ͬͯΔ͜ͱʗ΍ Γ͍ͨ͜ͱ • ਓͷखͰ΍ΔͱʮࡶʯʹͳΓ͕ͪͳςετΛ ஔ͖׵͍͑ͯ͘ • ୯७ͳUIૢ࡞ʹΑΔը໘ભҠ • ʮมߋʹΑΔ૝ఆ֎ͷӨڹʯ͕ͳ͍͜ͱͷ ֬ೝ

  28. CIͷൃՐλΠϛϯά • feature/xxxʼdevelopɺhotfix ͷPRɺrelease/xxxͷߋ৽ • ςετʴ֬ೝ༻APKͷϏϧυͱ഑෍ • developͷߋ৽ʴຖேX࣌ • Magic

    Podͷ࣮ࢪ • masterͷߋ৽ • APKͷϏϧυͱ഑෍ɺGoogle Play΁ͷΞοϓϩʔυ
  29. ࠓޙͷ՝୊ • mac miniͷߏ੒؅ཧʗJenkinsͷόοΫΞοϓ • ςετͷްΈ͕૿͑ͨͱ͖ͷʮςετ͔࣌ؒ ͔Γ͗͢ʯ໰୊ • ػछґଘͷࣄલνΣοΫ͸ࠓޙ΋ղܾͰ͖ͦ ͏ʹͳ͍

  30. ΑΖ͓͘͠ئ͍͠·͢ʂ

  31. ͓͠·͍