iOS Test Tea Time #3
CI/CDΛϛχϚϧʹߏங͢ΔiOS Test TeaTime #3Daiki Matsudate@d_date
View Slide
͜ͷτʔΫͷείʔϓ։ൃڥͷվળ CI/CDͷߏஙςετɾCI/CDͷӡ༻ɾվળ#ଟ͜ͷtarappo͞Μ͕͢Out of ScopeCI/CDʹର͢Δߟ͑ํ
Pull Reqeust͝ͱʹBuild / Test͕ޭ͠MergeՄೳͰ͋ΔৗʹmainϒϥϯνͷϏϧυ͕݈߁ৗʹProductionͷϦϦʔε͕Մೳhttps://www.redhat.com/ja/topics/devops/what-is-ci-cd
CI / CDͳ͍ͥ͠ͷ͔• උ͍ͯ͘͠ΠςϨʔγϣϯ͕͍• WorkflowΛʮॻ͘ʯˠʮಈ͔͢ʯˠʮࣦഊ͢Δʯ·Ͱ͕͍• CLIσϑΥϧτͰͳ͍ݴޠͷηοτΞοϓ• ڥม• iOSͷॺ໊͕͍ؔ͜͠ɺ͕ࣝݹ͍• ܦݧ͕ಘΒΕʹ͍͘
CI/CDʹର͢Δߟ͑ํ
CI/CDʹର͢Δߟ͑ํඅ༻ରޮՌ• ͓ۚΛ͔͚ΕϚγϯεϖοΫ͕Α͘ͳΓ࣮ߦ͕࣌ؒݮ• ࣮ଶʹݟ߹Θͳ͍ߴֹ՝ۚ
CI/CDʹର͢Δߟ͑ํ࣌ؒରޮՌ• νʔϜਓ͕ଟ͍΄ͲޮՌಘΒΕ͍͢• Workflowͷमਖ਼ʹΑΓݮ͞Ε࣮ͨߦ࣌ؒ • vs. मਖ਼͢Δͷʹ͔͔ͬͨ࣌ؒ• ࣮ηοτΞοϓΑΓϝϯςφϯεʹ͕͔͔࣌ؒΔ• ߥഇ͢Δ΄ͲמΓେม
Δ͖͜ͱ• γϯϓϧͳߏʹ͢Δ• ςετͱΛͭ͘Δ• ༨༟͕͋ΕϥΠϒϥϦͷΞοϓσʔτΛఆظ࣮ߦ͢Δ
γϯϓϧͳߏʹ͢Δ
• Swift Package ManagerΛ͏• XcodeͷSchemeΛ׆༻͢Δ• Automatic Code SigningΛ͏• App Store Connect APIΛ͏• Test FlightͰ͢ΔApple PlatformͷCI / CDBest Practice
• SwiftҎ֎ͷݴޠͷηοτΞοϓ͕ෆཁSwift Package ManagerΛ͏xcodebuild -resolvePackageDependenciesswift package build
https://speakerdeck.com/d_date/swift-package-centered-project-build-and-practicehttps://www.youtube.com/watch?v=e_T1-XrYf4A
XcodeͷSchemeΛ׆༻͢Δ• Scheme = Target x Configuration• SchemeΛࢦఆ͢Δ͚ͩͰઃఆΛΓସ͑ΒΕΔ
Automatic Code SigningΛ͏iOSͷॺ໊ͱ໘• Certificate (Development / Production)• Provisioning Profile (Development / Ad hoc / App Store / Enterprise)• Team• Bundle Identifier (per environment)
Automatic Code SigningΛ͏Provisioning ProfileDev Portal͔Βऔಘ• Certificate (Development / Production)• Provisioning Profile (Development / Ad hoc / App Store / Enterprise)• Team• Bundle Identifier (per environment)*fastlane matchͱͷซ༻ෆՄ
App Store Connect APIΛ͏Provisioning ProfileDev Portal͔Βऔಘ• Certificate (Development / Production)• Provisioning Profile (Development / Ad hoc / App Store / Enterprise)• Team• Bundle Identifier (per environment)• API Key
Test FlightͰ͢Δhttps://qiita.com/d_date/items/db540e9ed127b1b23e40
Βͳ͍͍ͯ͘͜ͱ• CIͷ࣮ߦ࣌ؒݮ• ී௨ઐऀ͍ͳ͍ͷͰ (DeNA SWETάϧʔϓΛআ͘ʣ͜͜ؤுΒͳ͍• νʔϜϝϯόʔ͕ଟ͘ͳ͖ͬͯͯϏϧυ͕࣌ؒ༗ҙʹ৳ͼͨɺδϣϒ͕٧·Γ࢝ΊͨΒରࡦ͢Δ• ʢաͳʣڞ௨Խ• ͏͔Ͳ͏͔Θ͔Βͳ͍ͷ
ςετͱΛͭ͘Δ
༨༟͕͋ΕϥΠϒϥϦͷߋ৽
༨༟͕͋ΕϥΠϒϥϦͷߋ৽• dependabotͷઃఆʢSwiftରԠதʣ• Bitrise / GitHub ActionsͰिҰճϏϧυΛճ͢• Package.resolvedΛࣺͯͨΒ͏·͍ͣ͘͘
Flutterͷ߹ʢ༨༟͕͋ΕVoice Onlyʣ
·ͱΊ• ϛχϚϜʹߏங͍ͯ͘͠• ͦ͏͢Δͱͪΐͬͱͣͭվળ͕͘͢͠ͳΔ• ඞཁͳ͜ͱ͚ͩΛΔʢYAGNIʣ
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