Upgrade to Pro — share decks privately, control downloads, hide ads and more …

弊社のアプリ開発CI環境

 弊社のアプリ開発CI環境

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

yamacraft

May 10, 2017
Tweet

More Decks by yamacraft

Other Decks in Technology

Transcript

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

    View Slide

  2. profile
    • @yamacraft (Wataru Yamada)
    • Mobile Application Engineer
    • LeadingMark, inc
    • team Y.G.E.(private)

    View Slide

  3. View Slide

  4. View Slide

  5. دߘͯ͠·͢ʂ
    • ൃചதʂʂ
    • Android 7.0/7.1
    • Firebase (Android/iOS)
    • Analytics
    • Notifications

    View Slide

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

    View Slide

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

    View Slide

  8. View Slide

  9. ։ൃϑϩʔʹ͍ͭͯ

    View Slide

  10. Git Flow

    View Slide

  11. Git Flowͷཧ༝
    • ϦϦʔενΣοΫதʹ΋։ൃ͕ਐΉՄೳੑ
    • ݱࡏͷϦϦʔε͍ͯ͠Δόʔδϣϯͷίʔυʹ
    masterͷ࠷৽ίʔυͱ͔ͨͬͨ͠
    • ςετྔ͕ബ͍ʢ͜͜ॏཁʣ
    • GitHub Flow͸ςετ౳ʹΑΔ඼࣭νΣοΫ͕ख
    ް͍͜ͱʴଈϦϦʔε͕લఏͱ͍͏ೝࣝ

    View Slide

  12. Git Flowͷ՝୊
    • GitHubͷPRͰrelease΍hotfixͷϚʔδΛ͢Δ
    ͷ͕΍΍໘౗
    • ʢϚʔδͷʣॱ൪ͱ͔ؒҧ͑ͯ΋ڐ༰͢Δ޿
    ͍৺Ͱ…

    View Slide

  13. Jenkins

    View Slide

  14. Jenkinsͷ࠾୒ཧ༝
    • ͱ͍͏ΑΓWebαʔϏε͔mac miniΛ࢖͏͔ͱ͍͏બ୒
    • iOSΞϓϦͷϏϧυ΋ߟྀ͢Δඞཁ͕͋ͬͨʢҰ൪ͷཧ༝ʣ
    • CircleCIͩͱʢ࠷খϓϥϯͰʣ݄$39
    • AppleCare෇ͰϝϞϦੵΜͩmac mini͕໿100,000ԁ
    • ؀ڥʢSDK΍AVD౳ʣΛͪ͜ΒଆͰίϯτϩʔϧͰ͖Δ
    • Android͚ͩͳΒଞʹ΋બ୒ࢶ͸͋Δͱࢥ͍·͢

    View Slide

  15. JenkinsΛ࢖͏࣌ͷ஫ҙ఺
    • Ͱ͖ΔݶΓଐਓੑΛഉআ͢Δ
    • δϣϒ͸ݶΓͳ͘γϯϓϧʹ
    • δϣϒͰ΍Δ͜ͱ͸ɺઐ༻ͷ
    γΣϧΛୟ͚ͩ͘ʹ͢Δ
    • γΣϧ಺༰΋ϦϙδτϦ؅ཧ
    ʹͳΔͷͰศར

    View Slide

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

    View Slide

  17. ςετ

    View Slide

  18. ݴ͏΄Ͳͳ͍ʂ

    View Slide

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

    View Slide

  20. ςετͷࢦ਑ʹ͍ͭͯ
    • ެࣜͷςετΨΠυΛ९क͢Δ
    • https://developer.android.com/studio/test/index.html
    • ΧόϨοδ͕100%ʹͰ͖ΔͳΒɺ΍ͬͨํ͕ྑ͍
    • େࣄͳ͜ͱ͸ɺೖྗʹର͢Δग़ྗ݁Ռ
    • ςετίʔυͷϝϯςͰۤ͠Ή͙Β͍ͳΒɺਓͷखʹ
    ΑΔςετΛ৴ͯ͡ҕͶ͍ͨ…

    View Slide

  21. ʢਓྗςετͰʣ
    Կ΋มΘͬͯͳ͍͜ͱΛ
    νΣοΫ͢Δͷ͸
    ͠ΜͲ͍ΑͶ

    View Slide

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

    View Slide

  23. AppiumςετΘ͔ΒΜ…

    View Slide

  24. View Slide

  25. Magic Podͱ͸
    • UIςετͷࣗಈԽαʔϏεʢΫϩʔζυβલʣ
    • σΟʔϓϥʔχϯάΛ࢖ͬͯΩϟϓը૾͔ΒϘλϯͳͲΛೝࣝ
    ͯ͘͠ΕΔ
    • Appiumͷςετ͕؆୯ʹ࡞ΕΔʂʢ͍͍͘͢͝ʂʣ
    • ͜ͷษڧձͷୈ̐ճͰ঺հ͞Ε͍ͯͨαʔϏεͰ͢
    • http://blog.trident-qa.com/2016/10/
    introduce_magic_pot/

    View Slide

  26. αϯϓϧʢiOSΞϓϦʣ

    View Slide

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

    View Slide

  28. CIͷൃՐλΠϛϯά
    • feature/xxxʼdevelopɺhotfix ͷPRɺrelease/xxxͷߋ৽
    • ςετʴ֬ೝ༻APKͷϏϧυͱ഑෍
    • developͷߋ৽ʴຖேX࣌
    • Magic Podͷ࣮ࢪ
    • masterͷߋ৽
    • APKͷϏϧυͱ഑෍ɺGoogle Play΁ͷΞοϓϩʔυ

    View Slide

  29. ࠓޙͷ՝୊
    • mac miniͷߏ੒؅ཧʗJenkinsͷόοΫΞοϓ
    • ςετͷްΈ͕૿͑ͨͱ͖ͷʮςετ͔࣌ؒ
    ͔Γ͗͢ʯ໰୊
    • ػछґଘͷࣄલνΣοΫ͸ࠓޙ΋ղܾͰ͖ͦ
    ͏ʹͳ͍

    View Slide

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

    View Slide

  31. ͓͠·͍

    View Slide