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

BitriseでFastlane/Gradleプラグインの統合テスト

Kenta Kase
September 03, 2019

 BitriseでFastlane/Gradleプラグインの統合テスト

Bitrise User Group Meetup #2での発表スライド
https://bitrise-japan.connpass.com/event/141052/

Kenta Kase

September 03, 2019
Tweet

More Decks by Kenta Kase

Other Decks in Programming

Transcript

  1. BitriseͰFastlane/
    GradleϓϥάΠϯͷ

    ౷߹ςετ
    2019/09/03 Bitrise User Group Meetup #2

    Ճ੉݈ଠ @Kesin11

    View Slide

  2. ࣗݾ঺հ
    • ॴଐɿDeNAͷSWETνʔϜ

    • Twitterɿ@Kesin11

    • GitHubɿKesin11

    • ͓࢓ࣄɿݱࡏ͸CI/CD׆༻αϙʔτɺؔ࿈ٕज़ͳͲͷ
    ݕূ

    • ൒೥લ·Ͱ͸QAνʔϜͷࣗಈԽαϙʔτ

    View Slide

  3. ϓϥοτϑΥʔϜ͔Β

    ϦδΣΫτ͞ΕΔϦεΫΛ
    νΣοΫͰ͖Δࣾ಺πʔϧΛ
    ࡞੒͠·ͨ͠

    View Slide

  4. ͱ͍͏࿩ΛiOSDC 2019Ͱ͢Δ
    ༧ఆͰ͢
    • ࠓ೔͸ͦͷπʔϧͷCI/CDͷ࿩
    https://fortee.jp/iosdc-japan-2019/proposal/d51e7062-2eb1-4a86-bf5f-4928fa3b04c8

    View Slide

  5. AppChecker͕νΣοΫ͢Δ಺༰
    • iOS
    • XcodeɺiOS SDK͕ཁٻόʔδϣϯҎ্͔

    • PrivateFrameworkΛ࢖͍ͬͯͳ͍͔

    • Android
    • targetSdkVersion͕ཁٻόʔδϣϯҎ্͔

    • ෆඞཁʹϓϥΠόγʔʹ௚݁͢ΔpermissionΛऔಘ͍ͯ͠ͳ͍͔

    • ৄ͍͠࿩͸iOSDCͰʂ

    View Slide

  6. ࣾ಺Ͱ޿͘࢖ΘΕΔπʔϧͷͨΊ
    ςετ΋͔ͬ͠Γॻ͍͍ͯ͘

    View Slide

  7. Ϣχοτςετ

    View Slide

  8. Ϣχοτςετ
    • ֎෦ͷґଘ͸mockʢ޿ٛʣ͢Δ

    • ྫ: Xcodeͷόʔδϣϯ͸ipaͷInfo.plistͷ஋ΛνΣοΫ͍ͯ͠Δ

    • DTXcode: "1010" -> Xcode 10.1ͰϏϧυ͞Εͨ

    • Info.plistΛύʔεͯ͠࡞ΒΕͨGem::VersionΦϒδΣΫτΛ࢖༻ͯ͠

    Ϗϧυͨ͠Xcodeͷόʔδϣϯ͕ݹ͗͢ͳ͍͔νΣοΫ

    • ςετͰ͸μϛʔͷ஋Ͱੜ੒ͨ͠Gem::VersionΦϒδΣΫτΛ࢖༻ͯ͠
    όʔδϣϯൺֱͷϩδοΫ͕ਖ਼͍͜͠ͱΛݕূ

    • ຊ෺ͷInfo.plistΛ༻ҙ͠ͳͯ͘΋ϩδοΫͷςετ͕Ͱ͖Δ

    View Slide

  9. ϢχοτςετͰΧόʔ

    Ͱ͖ͳ͍͜ͱ

    View Slide

  10. ϢχοτςετͰΧόʔͰ͖ͳ
    ͍͜ͱ
    • ࣮ࡍʹπʔϧΛ࣮ߦͯ͠Τϥʔ͕ى͖ͳ͍͔

    • ༷ʑͳ֎෦πʔϧΛݺͼग़͍ͯ͠ΔͷͰ݁ߏෆ҆

    • unzip, grep, xcrun, otoolͳͲ

    • Ϗϧυ؀ڥ͕৽͘͠ͳͬͨ৔߹ʹΤϥʔ͕ى͖ͳ͍͔

    • ಛʹXcodeͷόʔδϣϯΛ্͛ͨͱ͖

    View Slide

  11. AppCheckerͷछྨ
    • iOS

    • FastlaneϓϥάΠϯɺgemελϯυΞϩϯ൛

    • Android

    • GradleϓϥάΠϯɺgemελϯυΞϩϯ൛

    • ελϯυΞϩϯ൛͕ඞཁͳཧ༝

    • Fastlane/GradleΛ࢖༻͍ͯ͠ͳ͍ήʔϜλΠτϧ༻

    View Slide

  12. AppCheckerͷछྨ
    • όϦΤʔγϣϯ͕ଟ͍

    • ߴ͍҆ఆੑ͕ٻΊΒΕ͍ͯΔ

    • ଞνʔϜͷϏϧυϑϩʔʹ૊ΈࠐΜͰ΋Β͏ͨΊ

    • νΣοΫϩδοΫ͸શͯϢχοτςετΛ

    ॻ͍͕ͨͦΕͰ΋ෆ҆

    View Slide

  13. BitriseͰ౷߹ςετ
    Logo by https://www.bitrise.io/presskit

    View Slide

  14. BitriseͰ౷߹ςετ
    • pull-req͝ͱʹ࣮ࡍͷipa/apkʹରͯ͠AppCheckerΛ࣮ߦ

    • Τϥʔແ͠Ͱ׬૸Ͱ͖Δ͔

    • νΣοΫ݁ՌͷHTMLϨϙʔτ͕ੜ੒͞Ε͍ͯΔ͔

    • αϯϓϧΞϓϦΛຖճϏϧυͯ͠ipa/apkΛੜ੒

    • BitriseͰςετ͠΍͘͢͢ΔͨΊʹΞϓϦͷίʔυ͸
    AppCheckerͷϦϙδτϦ಺ʹؚΊͯ͠·͏ํࣜ

    View Slide

  15. BitriseͰ౷߹ςετʢiOSʣ
    1.FastlaneϓϥάΠϯΛϩʔΧϧ͔ΒΠϯετʔϧ

    2.αϯϓϧΞϓϦϏϧυ

    3.Fastlane൛Λ࣮ߦ

    4.ελϯυΞϩϯ൛Λ࣮ߦ

    5.exit 0 && HTMLϨϙʔτ͕ੜ੒͞Ε͍ͯΔ͜ͱΛ֬ೝ

    View Slide

  16. BitriseͰ౷߹ςετʢiOSʣ
    1.FastlaneϓϥάΠϯΛϩʔΧϧ͔ΒΠϯετʔϧ
    2.αϯϓϧΞϓϦϏϧυ

    3.Fastlane൛Λ࣮ߦ

    4.ελϯυΞϩϯ൛Λ࣮ߦ

    5.exit 0 && HTMLϨϙʔτ͕ੜ੒͞Ε͍ͯΔ͜ͱΛ֬ೝ

    View Slide

  17. BitriseͰ౷߹ςετʢiOSʣ
    1.FastlaneϓϥάΠϯΛϩʔΧϧ͔ΒΠϯετʔϧ

    2.αϯϓϧΞϓϦϏϧυ
    3.Fastlane൛Λ࣮ߦ
    4.ελϯυΞϩϯ൛Λ࣮ߦ

    5.exit 0 && HTMLϨϙʔτ͕ੜ੒͞Ε͍ͯΔ͜ͱΛ֬ೝ

    View Slide

  18. BitriseͰ౷߹ςετʢiOSʣ
    1.FastlaneϓϥάΠϯΛϩʔΧϧ͔ΒΠϯετʔϧ

    2.αϯϓϧΞϓϦϏϧυ

    3.Fastlane൛Λ࣮ߦ

    4.ελϯυΞϩϯ൛Λ࣮ߦ
    5.exit 0 && HTMLϨϙʔτ͕ੜ੒͞Ε͍ͯΔ͜ͱΛ֬ೝ

    View Slide

  19. BitriseͰ౷߹ςετʢAndroidʣ
    1.gradlew publishToMavenLocalͰϩʔΧϧ
    mavenʹpublish

    2.αϯϓϧΞϓϦϏϧυ + AppCheckerΛ࣮ߦ

    3.ελϯυΞϩϯ൛Λ࣮ߦ

    4.exit 0 && HTMLϨϙʔτ͕ੜ੒͞Ε͍ͯΔ͜ͱΛ
    ֬ೝ

    View Slide

  20. BitriseͰ౷߹ςετʢAndroidʣ
    1.gradlew publishToMavenLocalͰϩʔΧϧ
    mavenʹpublish
    2.αϯϓϧΞϓϦϏϧυ + AppCheckerΛ࣮ߦ

    3.ελϯυΞϩϯ൛Λ࣮ߦ

    4.exit 0 && HTMLϨϙʔτ͕ੜ੒͞Ε͍ͯΔ͜ͱΛ
    ֬ೝ

    View Slide

  21. BitriseͰ౷߹ςετʢAndroidʣ
    2.αϯϓϧΞϓϦϏϧυ + AppCheckerΛ࣮ߦ
    3.ελϯυΞϩϯ൛Λ࣮ߦ

    4.exit 0 && HTMLϨϙʔτ͕ੜ੒͞Ε͍ͯΔ͜
    ͱΛ֬ೝ

    View Slide

  22. BitriseͰ౷߹ςετʢAndroidʣ
    1.publishToMavenLocalͰϩʔΧϧmavenʹ
    publish

    2.αϯϓϧΞϓϦϏϧυ + AppCheckerΛ࣮ߦ

    3.ελϯυΞϩϯ൛Λ࣮ߦ
    4.exit 0 && HTMLϨϙʔτ͕ੜ੒͞Ε͍ͯΔ͜ͱ
    Λ֬ೝ

    View Slide

  23. खݩͰࢼ͞ͳͯ͘΋

    ҆৺ͯ͠Ϛʔδ

    Ͱ͖ΔΑ͏ʹͳΓ·ͨ͠

    View Slide

  24. ҆৺ͯ͠։ൃͰ͖ΔΑ͏ʹ
    ͳͬͨͷͰ
    ϦϦʔε࡞ۀ΋ࣗಈԽ

    View Slide

  25. ϒϥϯνઓུ
    • feature, develop, master

    • ػೳ։ൃpull-reqɿdevelop <- feature

    • ౷߹ςετΛ࣮ߦ

    • ϦϦʔεpull-reqɿmaster <- develop

    • ࣗಈϦϦʔε࡞ۀ

    View Slide

  26. ϦϦʔε࡞ۀͷࣗಈԽ
    • iOS͸githubɺAndroid͸ࣾ಺maven

    • masterϚʔδͰόʔδϣϯ൪߸Λ୯७૿Ճ

    • ྫ: 1.13.0 -> 1.14.0

    • ηϚϯςΟοΫόʔδϣχϯά͸ෆཁ

    • ϓϥοτϑΥʔϜଆͷ࠷৽ࣄ৘ʹରԠ͢ΔͨΊɺ

    ৗʹ࠷৽൛Λ࢖͏લఏ

    View Slide

  27. ϦϦʔε࡞ۀͷࣗಈԽ
    • gemͱgradleͷόʔδϣϯΛߋ৽

    • gemόʔδϣϯߋ৽ɿBump::Bump.next_version("minor")

    • ଞͷඞཁͳϑΝΠϧΛਖ਼نදݱͰॻ͖׵͑

    • iOSɿmasterʹpush

    • Androidɿࣾ಺mavenʹpublish

    • git tagΛ࡞੒ͯ͠push

    View Slide

  28. ϦϦʔεϊʔτͷ࡞੒
    • GitHubͷϦϦʔεϖʔδ͔ΒλάΛબ୒

    • ϦϦʔεϊʔτΛॻ͘ʢ·ͩखಈ...ʣ

    View Slide

  29. ·ͱΊ
    • Fastlane/GradleϓϥάΠϯͷ౷߹ςετͱ

    ϦϦʔεࣗಈԽΛBitriseͰ࣮ݱ

    • Ϗϧυͱಉ͡؀ڥͰςετ͍ͯ͠ΔͷͰ҆৺

    • Ϣχοτςετɺ౷߹ςετΛద੾ʹ࢖͍෼
    ͚·͠ΐ͏

    View Slide