Slide 1

Slide 1 text

CI/CDΛϛχϚϧʹߏங͢Δ iOS Test TeaTime #3 Daiki Matsudate @d_date

Slide 2

Slide 2 text

͜ͷτʔΫͷείʔϓ ։ൃ؀ڥͷվળ CI/CDͷߏங ςετɾ഑෍ CI/CDͷӡ༻ɾվળ #ଟ෼͜ͷtarappo͞Μ͕࿩͢ Out of Scope CI/CDʹର͢Δߟ͑ํ

Slide 3

Slide 3 text

Pull Reqeust͝ͱʹBuild / Test͕੒ޭ͠MergeՄೳͰ͋Δ ৗʹmainϒϥϯνͷϏϧυ͕݈߁ ৗʹProduction΁ͷϦϦʔε͕Մೳ https://www.redhat.com/ja/topics/devops/what-is-ci-cd

Slide 4

Slide 4 text

CI / CD͸ͳͥ೉͍͠ͷ͔ • ੔උ͍ͯ͘͠ΠςϨʔγϣϯ͕௕͍ • Work fl owΛʮॻ͘ʯˠʮಈ͔͢ʯˠʮࣦഊ͢Δʯ·Ͱ͕௕͍ • CLI΍σϑΥϧτͰ͸ͳ͍ݴޠͷηοτΞοϓ • ؀ڥม਺ • iOSͷॺ໊ؔ܎͕΍΍͍͜͠ɺ஌͕ࣝݹ͍ • ܦݧ஋͕ಘΒΕʹ͍͘

Slide 5

Slide 5 text

CI/CDʹର͢Δߟ͑ํ

Slide 6

Slide 6 text

CI/CDʹର͢Δߟ͑ํ අ༻ରޮՌ • ͓ۚΛ͔͚Ε͹ϚγϯεϖοΫ͕Α͘ͳΓ࣮ߦ͕࣌ؒ࡟ݮ • ࣮ଶʹݟ߹Θͳ͍ߴֹ՝ۚ

Slide 7

Slide 7 text

CI/CDʹର͢Δߟ͑ํ ࣌ؒରޮՌ • νʔϜਓ਺͕ଟ͍΄ͲޮՌ͸ಘΒΕ΍͍͢ • Work fl owͷमਖ਼ʹΑΓ࡟ݮ͞Ε࣮ͨߦ࣌ؒ • vs. मਖ਼͢Δͷʹ͔͔ͬͨ࣌ؒ • ࣮͸ηοτΞοϓΑΓϝϯςφϯεʹ͕͔͔࣌ؒΔ • ߥഇ͢Δ΄Ͳ૲מΓ͸େม

Slide 8

Slide 8 text

΍Δ΂͖͜ͱ • γϯϓϧͳߏ੒ʹ͢Δ • ςετͱ഑෍Λͭ͘Δ • ༨༟͕͋Ε͹ϥΠϒϥϦͷΞοϓσʔτΛఆظ࣮ߦ͢Δ

Slide 9

Slide 9 text

γϯϓϧͳߏ੒ʹ͢Δ

Slide 10

Slide 10 text

• Swift Package ManagerΛ࢖͏ • XcodeͷSchemeΛ׆༻͢Δ • Automatic Code SigningΛ࢖͏ • App Store Connect APIΛ࢖͏ • Test FlightͰ഑෍͢Δ Apple PlatformͷCI / CD Best Practice

Slide 11

Slide 11 text

• SwiftҎ֎ͷݴޠͷηοτΞοϓ͕ෆཁ Swift Package ManagerΛ࢖͏ xcodebuild -resolvePackageDependencies swift package build

Slide 12

Slide 12 text

https://speakerdeck.com/d_date/swift-package-centered-project-build-and-practice https://www.youtube.com/watch?v=e_T1-XrYf4A

Slide 13

Slide 13 text

XcodeͷSchemeΛ׆༻͢Δ • Scheme = Target x Con fi guration • SchemeΛࢦఆ͢Δ͚ͩͰઃఆΛ੾Γସ͑ΒΕΔ

Slide 14

Slide 14 text

Automatic Code SigningΛ࢖͏ iOSͷॺ໊ͱ഑෍͸໘౗ • Certi fi cate (Development / Production) • Provisioning Pro fi le (Development / Ad hoc / App Store / Enterprise) • Team • Bundle Identi fi er (per environment)

Slide 15

Slide 15 text

Automatic Code SigningΛ࢖͏ Provisioning Pro fi le͸Dev Portal͔Βऔಘ • Certi fi cate (Development / Production) • Provisioning Pro fi le (Development / Ad hoc / App Store / Enterprise) • Team • Bundle Identi fi er (per environment) *fastlane matchͱͷซ༻͸ෆՄ

Slide 16

Slide 16 text

App Store Connect APIΛ࢖͏ Provisioning Pro fi le͸Dev Portal͔Βऔಘ • Certi fi cate (Development / Production) • Provisioning Pro fi le (Development / Ad hoc / App Store / Enterprise) • Team • Bundle Identi fi er (per environment) • API Key

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

Test FlightͰ഑෍͢Δ https://qiita.com/d_date/items/db540e9ed127b1b23e40

Slide 19

Slide 19 text

΍Βͳ͍͍ͯ͘͜ͱ • CIͷ࣮ߦ࣌ؒ࡟ݮ • ී௨͸ઐ೚ऀ͸͍ͳ͍ͷͰ (DeNA SWETάϧʔϓΛআ͘ʣ͜͜͸ؤுΒͳ ͍ • νʔϜϝϯόʔ͕ଟ͘ͳ͖ͬͯͯϏϧυ͕࣌ؒ༗ҙʹ৳ͼͨɺδϣϒ͕٧ ·Γ࢝ΊͨΒରࡦ͢Δ • ʢա౓ͳʣڞ௨Խ • ࢖͏͔Ͳ͏͔Θ͔Βͳ͍΋ͷ

Slide 20

Slide 20 text

ςετͱ഑෍Λͭ͘Δ

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

No content

Slide 23

Slide 23 text

No content

Slide 24

Slide 24 text

༨༟͕͋Ε͹ϥΠϒϥϦͷߋ৽

Slide 25

Slide 25 text

༨༟͕͋Ε͹ϥΠϒϥϦͷߋ৽ • dependabotͷઃఆʢSwift͸ରԠதʣ • Bitrise / GitHub ActionsͰिҰճϏϧυΛճ͢ • Package.resolvedΛࣺͯͨΒ͏·͍͘͘͸ͣ

Slide 26

Slide 26 text

Flutterͷ৔߹ ʢ༨༟͕͋Ε͹Voice Onlyʣ

Slide 27

Slide 27 text

·ͱΊ • ϛχϚϜʹߏங͍ͯ͘͠ • ͦ͏͢Δͱͪΐͬͱͣͭվળ͕͠΍͘͢ͳΔ • ඞཁͳ͜ͱ͚ͩΛ΍ΔʢYAGNIʣ

Slide 28

Slide 28 text

References • https://qiita.com/d_date/items/a06b5661101460851f4c • https://qiita.com/d_date/items/db540e9ed127b1b23e40 • https://speakerdeck.com/d_date/swift-package-centered-project-build-and- practice • https://www.youtube.com/watch?v=e_T1-XrYf4A