$30 off During Our Annual Pro Sale. View Details »

KMMのCI/CD

 KMMのCI/CD

Masatoshi Kubode

March 10, 2023
Tweet

More Decks by Masatoshi Kubode

Other Decks in Programming

Transcript

  1. ©2023 Wantedly, Inc.
    KMMͷCI/CD
    KMM։ൃʹ͔ܽͤͳ͍CI/CDͷߏஙํ๏
    Android Test Night #8
    2023/03/10 ٱอग़խढ़

    View Slide

  2. ©2023 Wantedly, Inc.
    XXXXBOUFEMZDPNJELVCPEF

    View Slide

  3. ©2023 Wantedly, Inc.
    w ,..ͷ$*$%ͷඞཁੑ
    w $%ߏஙύλʔϯ
    w 8BOUFEMZͰͷ࣮ྫ
    ΞδΣϯμ

    View Slide

  4. ©2023 Wantedly, Inc.
    ,..ͷ$*$%ͷඞཁੑ

    View Slide

  5. ©2023 Wantedly, Inc.
    ,..ͱ͸
    https://kotlinlang.org/lp/mobile/

    View Slide

  6. ©2023 Wantedly, Inc.
    ,..ͷσϦόϦʔϫʔΫϑϩʔ

    View Slide

  7. ©2023 Wantedly, Inc.
    $*ͷඞཁੑ
    🐞
    🐞 🐞

    ✅ ✅
    ख໭ΓΛݮΒͯ͠KMMΛ҆શ͔ͭ༰қʹมߋ͢ΔͨΊʹඞཁʂ

    View Slide

  8. ©2023 Wantedly, Inc.
    $%ͷඞཁੑ
    σϦόϦʔΛૣΊΔʹ͸ʁ
    👉 KMMͷσϦόϦʔΛૣΊΔ


    👉 ஗͍ͱશମύϑΥʔϚϯε௿Լ

    View Slide

  9. ©2023 Wantedly, Inc.
    ,..ͷσϦόϦʔ

    View Slide

  10. ©2023 Wantedly, Inc.
    ,..ͷσϦόϦʔ

    View Slide

  11. ©2023 Wantedly, Inc.
    .POPSFQP

    View Slide

  12. ©2023 Wantedly, Inc.
    1SPT
    • KMM୯ମͷCI/CDߏங͸ߟ͑ͳͯ͘ྑ͍


    • ςϯϓϨ͕͋Δ


    $POT
    • طଘΞϓϦʹ͸ద༻ͮ͠Β͍


    • KMM&iOSˍAndroidಉ࣌ʹมߋΛՃ͑ͳ͚Ε͹ͳΒͳ͍ͷͰཁٻϨϕϧ͕ߴ͍
    .POPSFQP

    View Slide

  13. ©2023 Wantedly, Inc.
    (JUTVCNPEVMF

    View Slide

  14. ©2023 Wantedly, Inc.
    1SPT
    • KMMͷมߋΛऔΓࠐΉλΠϛϯά͸iOS/AndroidͰܾΊΔ


    • طଘΞϓϦʹ΋औΓࠐΈ΍͍͢


    $POT
    • Git submoduleͷѻ͍͕೉͍͠


    • iOS։ൃʹJDK͕ඞཁʹͳΔ
    (JUTVCNPEVMF

    View Slide

  15. ©2023 Wantedly, Inc.
    ύοέʔδϚωʔδϟʔ

    View Slide

  16. ©2023 Wantedly, Inc.
    1SPT
    • KMMͷมߋΛऔΓࠐΉλΠϛϯά͸iOS/AndroidͰܾΊΔ


    • طଘΞϓϦʹ΋औΓࠐΈ΍͍͢


    • iOS/AndroidଆͰಛผͳ؀ڥߏங͕ෆཁ


    $POT
    • SwiftPM, CocoaPods, Mavenࣗମͷ؀ڥߏங͕೉͍͠


    • KMMʹόʔδϣϯΛׂΓৼΒͳ͚Ε͹ͳΒͳ͍
    ύοέʔδϚωʔδϟʔ

    View Slide

  17. ©2023 Wantedly, Inc.
    $%ߏங
    ύοέʔδϚωʔδϟʔ

    View Slide

  18. ©2023 Wantedly, Inc.
    w J04ͷͨΊʹNBD04্ͰͷϏϧυ͕ඞਢ
    w ࢖͍׳ΕͯΔJ04ͷαʔϏεʹ৐ͤΔͱΑ͍
    $*$%αʔϏεͷબ୒

    View Slide

  19. ©2023 Wantedly, Inc.
    ύοέʔδϚωʔδϟʔΛ࢖ͬͨߏஙํ๏ͷ঺հ
    w "OESPJE͸.BWFO(SBEMFͰ
    w J04͸ߏஙύλʔϯͭΛ঺հ
    $%

    View Slide

  20. ©2023 Wantedly, Inc.
    $%"OESPJE
    1. όʔδϣϯΛܾΊͯpublish
    2. Mavenʹshared.aar͕Ξοϓϩʔυ
    3. Maven͔ΒόʔδϣϯΛࢦఆͯ͠μ΢ϯϩʔυ
    4. Androidʹมߋ͕औΓࠐ·ΕΔ

    View Slide

  21. ©2023 Wantedly, Inc.
    $%"OESPJE՝୊
    ΠςϨʔγϣϯͷ͕͔͔࣌ؒΔ՝୊

    View Slide

  22. ©2023 Wantedly, Inc.
    $%"OESPJEϩʔΧϧ։ൃ
    Composite Build


    settings.gradleʹincludeBuild()


    ϩʔΧϧͷKMMͷมߋ͕ଈ൓ө͞ΕΔ

    View Slide

  23. ©2023 Wantedly, Inc.
    ͭ঺հ
    $%J04

    View Slide

  24. ©2023 Wantedly, Inc.
    $%J044XJGU1.PS$PDPB1PET
    1. όʔδϣϯΛܾΊͯdeploy
    2. ύοέʔδϚωʔδϟʔͷrepoʹΞοϓϩʔυ
    3. όʔδϣϯΛࢦఆͯ͠μ΢ϯϩʔυ
    4. iOSʹมߋ͕औΓࠐ·ΕΔ

    View Slide

  25. ©2023 Wantedly, Inc.
    $%J04(SBEMF
    1. όʔδϣϯΛܾΊͯpublish
    2. MavenʹklibܗࣜͰΞοϓϩʔυ
    3. iOSϓϩδΣΫτ಺ͷGradleϞδϡʔϧ΁ґଘ௥Ճ
    4. wrapperϞδϡʔϧ͕frameworkϏϧυ
    5. frameworkΛऔΓࠐΉ
    6. iOSʹมߋ͕औΓࠐ·ΕΔ

    View Slide

  26. ©2023 Wantedly, Inc.
    1SPT
    • SPM΍CocoaPods private repoෆཁ


    • ޙड़͢ΔϩʔΧϧ։ൃ͕͠΍͍͢


    $POT
    • iOSͷϏϧυதʹGradleϏϧυ͕ೖΓࠐΉ


    • JDK͕ඞཁ


    • Ϗϧυ͕࣌ؒ௕͍
    $%J04(SBEMF

    View Slide

  27. ©2023 Wantedly, Inc.
    $%J04(SBEMFϩʔΧϧ։ൃ
    Composite Build


    settings.gradleʹincludeBuild()


    ϩʔΧϧͷKMMͷมߋ͕ଈ൓ө͞ΕΔ

    View Slide

  28. ©2023 Wantedly, Inc.
    8BOUFEMZͰͷ࣮ྫ

    View Slide

  29. ©2023 Wantedly, Inc.
    (JUTVCNPEVMF
    8BOUFEMZͰͷ࣮ྫ
    .BWFO$PDPB1PET

    View Slide

  30. ©2023 Wantedly, Inc.
    8BOUFEMZͰͷ࣮ྫ
    όʔδϣϯΛϏϧυ൪߸͔ΒࣗಈͰܾΊΔ


    👉 όʔδϣϯΛߟ͑Δख͔ؒΒ։์
    KMMͷϝΠϯϒϥϯνϚʔδͰ


    iOS/Android΁PRΛཱͯΔ


    👉 ϘλϯΛԡͤ͹औΓࠐΊΔ
    ͦͯ͠վળ

    View Slide

  31. ©2023 Wantedly, Inc.
    ·ͱΊ

    View Slide

  32. ©2023 Wantedly, Inc.
    w ,..Ͱͷ$*$%ͷॏཁੑΛઆ໌
    w ߏஙύλʔϯͱ࣮ྫΛ঺հ
    w ࠓޙ΋վળ͠ଓ͚͍ͨ
    ·ͱΊ

    View Slide

  33. ϖʔδλΠτϧ ϖʔδαϒλΠτϧ
    ©2023 Wantedly, Inc.
    5IBOLT

    View Slide