Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
AbemaTV iOSチームにおける継続的ナントカについて
Search
toshi0383
July 26, 2017
Programming
6
2.8k
AbemaTV iOSチームにおける継続的ナントカについて
iOS Test Night #5 での発表資料です!
toshi0383
July 26, 2017
Tweet
Share
More Decks by toshi0383
See All by toshi0383
CoreDataはじめました
toshi0383
0
160
Swiftコードバトル必勝法
toshi0383
1
310
Sheets API使ってみた
toshi0383
2
360
visionOSについてGlobeeが取り組んでいること
toshi0383
0
540
agile20150512-150512055145-lva1-app6892.pdf
toshi0383
0
230
たのしいAirPlay
toshi0383
1
730
Profiling using Signpost
toshi0383
2
980
AVPlayer周りの設計tips
toshi0383
6
890
cmdshelf::from("Swift")
toshi0383
3
900
Other Decks in Programming
See All in Programming
マンガアプリViewerの大画面対応を考える
kk__777
0
410
AIのバカさ加減に怒る前にやっておくこと
blueeventhorizon
0
120
三者三様 宣言的UI
kkagurazaka
0
280
他言語経験者が Golangci-lint を最初のコーディングメンターにした話 / How Golangci-lint Became My First Coding Mentor: A Story from a Polyglot Programmer
uma31
0
470
AI駆動で0→1をやって見えた光と伸びしろ
passion0102
1
880
Go言語はstack overflowの夢を見るか?
logica0419
0
650
pnpm に provenance のダウングレード を検出する PR を出してみた
ryo_manba
1
160
実践Claude Code:20の失敗から学ぶAIペアプログラミング
takedatakashi
18
9.1k
AIと人間の共創開発!OSSで試行錯誤した開発スタイル
mae616
2
830
なんでRustの環境構築してないのにRust製のツールが動くの? / Why Do Rust-Based Tools Run Without a Rust Environment?
ssssota
14
47k
EMこそClaude Codeでコード調査しよう
shibayu36
0
470
NixOS + Kubernetesで構築する自宅サーバーのすべて
ichi_h3
0
1.2k
Featured
See All Featured
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
10
890
Producing Creativity
orderedlist
PRO
348
40k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
253
22k
Keith and Marios Guide to Fast Websites
keithpitt
411
23k
The Illustrated Children's Guide to Kubernetes
chrisshort
49
51k
[RailsConf 2023] Rails as a piece of cake
palkan
57
5.9k
We Have a Design System, Now What?
morganepeng
53
7.8k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
Unsuck your backbone
ammeep
671
58k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
140
34k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
658
61k
Transcript
AbemaTV iOSνʔϜʹ͓͚Δܧ ଓతφϯτΧʹ͍ͭͯ iOS Test Night #5 Jul 26, 2017
Toshihiro Suzuki © Toshihiro Suzuki 2017 1
whoami — ླ ढ़༟ (@toshi0383) — iOS/tvOS Dev at AbemaTV
— αόή, F1, ΠϯυΧϨʔ — ৽ถύύ (͏͙͢3ϲ݄) © Toshihiro Suzuki 2017 2
tools and apps © Toshihiro Suzuki 2017 3
ࠓ CIٴͼ։ൃڥͷվળΛ௨ͯ͠ಘͨ ݟΛ͓͑͠·͢ © Toshihiro Suzuki 2017 4
ݱࡏͷঢ়گ © Toshihiro Suzuki 2017 5
Swi! 8ສߦۙ͘ͷίʔυϕʔε ------------------------------------------------------------------------------- Language files blank comment code ------------------------------------------------------------------------------- Swift
975 15178 10243 77378 © Toshihiro Suzuki 2017 6
1944 ςετέʔε Executed 1944 tests, with 0 failures (0 unexpected)
in 16.075 (17.243) seconds © Toshihiro Suzuki 2017 7
DebugϏϧυ࠷ه — 58ඵ (20177݄ࠒ) - ࣗͷiMac © Toshihiro Suzuki 2017
8
CIςετ࣮ߦ࠷ه — 251ඵ (20174݄ࠒ) - Jenkins on Mac Pro —
613ඵ (20177݄ࠒ) - Bitrise Elite VM © Toshihiro Suzuki 2017 9
CI΄΅ৗʹάϦʔϯ — ςετέʔεͷमਖ਼ΕҎ֎΄΅ࣦഊͳ͠ — PRฏۉ10ఔ(ഽײ֮)ͰϚʔδՄೳͳঢ়ଶʹ — ·͋·͋৺Α͍εϐʔυײ © Toshihiro Suzuki
2017 10
ࢥ͍ฦͤ © Toshihiro Suzuki 2017 11
20173݄ʹAbemaTVʹjoin © Toshihiro Suzuki 2017 12
࣌νʔϜ๊͕͍͑ͯͨ — ֤ࣗखݩͰͷϏϧυ͕10Ҏ্͔͔Δ => UIඍमਖ਼ͷΠς Ϩʔγϣϯ.. — Jenkinsͷςετ͕͍ͷͱෆ҆ఆͰͳ͔ͳ͔ϚʔδͰ͖ͳ ͍ =>
ۙ͘ແବʹ͢Δέʔε — Jenkins͕͍ΔMac͕ෆػݏ? => ڥͷϝϯςφϯε࡞ۀ ͰҰ௵͢ਓ͕ଓग़ʢओʹࢲʣ © Toshihiro Suzuki 2017 13
ରࡦͱͯͬͨ͜͠ͱ — ςετͷ҆ఆԽͱߴԽ — CarthageҠߦ — BitriseҠߦ © Toshihiro Suzuki
2017 14
ରࡦͱͯͬͨ͜͠ͱ — ςετͷ҆ఆԽͱߴԽ <- — CarthageҠߦ — BitriseҠߦ © Toshihiro
Suzuki 2017 15
ςετ҆ఆԽͱߴԽ ՝ — δϣϒͷ࣮ߦʹ20~40 — ςετ͕ෆ҆ఆͳ͍ͤͰ͜ΕͷϦτϥΠ͕Կճଓ͘ — JenkinsͰฒྻ࣮ߦͰ͖ͣɺϏϧυͪͰେौ!" ͜͏͍͏ͷΛͳΜͱ͔͔ͨͬͨ͠ ©
Toshihiro Suzuki 2017 16
ςετ҆ఆԽͱߴԽ ରࡦ — ඇಉظͷ݁ՌΛ͍ͪ͗ͯͨ͘͢ͷΛमਖ਼ (10ඵ => 1ඵ) — ίϯύΠϧͷߴԽ (͕͔͔࣌ؒͬͯΔͱ͜Ζ͚ͩܕਪΛ
ΊΔ) — 10ճʹ1ճͰࣦഊ͢ΔࢠϙΠο! (։ൃεϐʔυ > Χό Ϩοδ) — ϏϧυͱςετͦΕͧΕʹλΠϜΞτΛઃఆ (5ͱ3) © Toshihiro Suzuki 2017 17
ରࡦͱͯͬͨ͜͠ͱ — ςετͷ҆ఆԽͱߴԽ — CarthageҠߦ <- — BitriseҠߦ © Toshihiro
Suzuki 2017 18
ͳͥCarthageͳͷ͔ʁ — ݱঢ়ଘࡏ͢ΔϥΠϒϥϦཧπʔϧͷதͰҰ൪ߴԽ͠ ͍͢. — Ϗϧυͨ͠όΠφϦdSYMͳͲΛίϛοτͯ͠ӡ༻͢Δ͜ ͱͰɺCIͰΫϩʔϯ͢Δ͚ͩͰࡁΉ. — ϥΠϒϥϦͷϏϧυ͕͍ͷΛͳΜͱ͔͔ͨͬͨ͠ (RxSwift
1ɺProfobufؔ࿈ 2) © Toshihiro Suzuki 2017 19
CarthageҠߦͷϋϚΓͲ͜Ζ — ϥΠϒϥϦଆ͕CarthageରԠ͍ͯ͠ͳ͍ — ϥΠϒϥϦଆͷίʔυʹdebuggerͯΒΕͳ͍ — Info.plistෆ߹ — bcsymbolmapͬͯͳʹ —
ݹ͍bcsymbolmap͕ͬͯ͠·͏ — dSYMͰ͔͗͢ © Toshihiro Suzuki 2017 20
ϥΠϒϥϦଆ͕CarthageରԠ͍ͯ͠ͳ͍ — forkͯ͠ؤுͬͨ. — PRϚʔδͯ͘͠ΕΔέʔε͋Δ͕ɺݹ͍όʔδϣϯ͍ ͍ͨ߹ͳͲͲ͏ͯ͠forkΛϝϯς͍ͯ͘͠ඞཁ͋Γ. © Toshihiro Suzuki 2017
21
ϥΠϒϥϦଆͷίʔυʹdebuggerͯΒΕͳ͍ CarthageΛͬͨϑϨΩγϒϧͳ։ൃڥͷߏங http://qiita.com/toshi0383/items/e932a2fb2f1469bf95eb © Toshihiro Suzuki 2017 22
Info.plistෆ߹ ϥΠϒϥϦͷInfo.plist͕ݪҼͰૺ۰ͨ͠iTunesConnectΞο ϓϩʔυΤϥʔ http://qiita.com/toshi0383/items/6418e70b5c33e2de0d13 CFBundleVersionCFBundleShortVersionStringͷ ValidationʹҾ͔͔ͬΔ. ϥΠϒϥϦଆͰͪΌΜͱઃఆͯ͘͠Ε͍ͯΔඞཁ͕͋Δ. © Toshihiro Suzuki
2017 23
bcsymbolmapͬͯͳʹ — Carthage/Build/iOS ҎԼʹੜ͞ΕΔ. — bitcode͕༗ޮͳ߹ɺdSYMͱͷඥ͚ʹΘΕΔΒ͍͠. — ͱΓ͋͑ͣίϛοτ͠ͱ͚ok. © Toshihiro
Suzuki 2017 24
ݹ͍bcsymbolmap͕ͬͯ͠·͏ — carthage update ಛʹݹ͍bcsymbolmapΛআͯ͘͠Ε ͨΓ͠ͳ͍. — Ϟδϡʔϧ໊Ͱgrepͯ͠আ͢ΔࡶͳεΫϦϓτΛॻ͍ͨ Γͯ͠ӡ༻ͰΧόʔ. ©
Toshihiro Suzuki 2017 25
dSYMͰ͔͗͢ — GitHubͷϑΝΠϧαΠζ੍ݶ(50MB/1ϑΝΠϧ)ʹҾ͔͔ͬ Δέʔε͋Γ. — ݱঢ়Git LFSͰӡ༻. © Toshihiro Suzuki
2017 26
ରࡦͱͯͬͨ͜͠ͱ — ςετͷ҆ఆԽͱߴԽ — CarthageҠߦ — BitriseҠߦ <- © Toshihiro
Suzuki 2017 27
Bitriseͱ — ׂͱ࠷ۙग़͖ͯͨCIαʔϏε(SaaS) — AndroidXamarinʹରԠ — Linux VM͋Δ © Toshihiro
Suzuki 2017 28
ͳͥBitriseʹͨ͠ͷ͔ʁ — Ϗϧυ͕҆ఆͨ͠ͱͯ͠ɺͱʹ͔͘Jenkins৬ਓ͕ඞཁͳ ঢ়ଶΛ͔ͨͬͨ͠. — ݕূͷ݁ՌɺBitriseͷElite MachineͳΒΪϦΪϦεϖοΫ ͕ؒʹ߹ͬͨ. © Toshihiro
Suzuki 2017 29
Bitrise Elite MachineͷεϖοΫ Hardware: Hardware Overview: Model Name: Apple device
Model Identifier: VMware7,1 Processor Speed: 2.58 GHz Number of Processors: 2 Total Number of Cores: 2 L2 Cache (per Processor): 256 KB L3 Cache (per Processor): 30 MB Memory: 8 GB Boot ROM Version: VMW71.00V.0.B64.1506250318 SMC Version (system): 2.8f0 Serial Number (system): VMCpWilpP27U Hardware UUID: 420B563C-BB9B-3762-1FEF-AA73189D7017 ·͋·͋ϋΠεϖοΫͬΆ͍. © Toshihiro Suzuki 2017 30
Bitrise Elite Plan — ·͋·͋ϋΠεϖοΫͳVMΛಉ࣌ʹ3x~ฒྻ࣮ߦՄೳ — ฒྻ1ͭ͋ͨΓ$100͕ͩɺx3͕࠷ϥΠϯͳͷͰ $300~/ mo ͳʹҙ.
© Toshihiro Suzuki 2017 31
ͪͳΈʹ.. JenkinsΛ͍ଓ͚Δબࢶ͋Γ͑ ͳ͘ͳ͔ͬͨ © Toshihiro Suzuki 2017 32
JenkinsͰฒྻγϛϡϨʔλڥ — Macͷϓϩηεͷ্ݶղ์ (pxctestͷυΩϡϝϯτࢀর) — pxctestͰSimulator.appىಈͤͣʹ࣮ߦ͢Δ͜ͱͰϓϩ ηεͷઅ — ςετͷδϣϒͱЌͷδϣϒͰγϛϡϨʔλΛ͚ͯࢦ ఆ
࣮ࡍ·͋·͋Α͔ͬͨ. JenkinsΛ͍͜ͳͤͬͱߴͳ ͜ͱͰ͖Δͣ. © Toshihiro Suzuki 2017 33
BitriseҠߦͷצॴ — Makefileͷઃఆྫ (Bitriseͱؔͳ͍͚Ͳ) — bitrise.yml © Toshihiro Suzuki 2017
34
Makefileͷઃఆྫ SHOW_BUILD_SETTINGS=$(XCODEBUILD) $(ENV_VARS) $(OPTIONS) $(DESTINATION) \ -configuration $(CONFIGURATION) \ -showBuildSettings
BUILD_FOR_TESTING=$(XCODEBUILD) $(ENV_VARS) $(OPTIONS) $(DESTINATION) \ -configuration Test \ build-for-testing TEST_WITHOUT_BUILDING=$(XCODEBUILD) $(ENV_VARS) $(OPTIONS) $(DESTINATION) \ -configuration Test \ test-without-building fastlane scan ͱൺͨར - ࣮ߦ͕͍. - -showBuildSettings ͷग़ྗΛൺֱ͢Δ͜ͱͰϏϧυઃఆͷ ςετ͕Ͱ͖ΔɺͳͲ. © Toshihiro Suzuki 2017 35
bitrise.yml: workflow ϙΠϯτ - circle.ymltravis.ymlͱҧ͍ɺίϛοτ͠ͳ͍. - δϣϒΛworkflowͱͯ͠ઃఆ͢Δ. - workflowstepͷू·Γ. -
slackͷ௨؆୯ʹ࣮Ͱ͖Δ © Toshihiro Suzuki 2017 36
bitrise.yml: trigger map ϙΠϯτ - Trigger MapͰࡉ͔͘workflowΛࢦఆͰ͖Δ. © Toshihiro Suzuki
2017 37
Bitriseͷࡉ͔͍ใʹ͍ͭͯiOSDCͷCfPʹԠืͨ͠ͷͰ ͜͜ͰׂѪ ؾʹͳΔਓͥͻ֦ࢄͷ΄Ͳ! https://iosdc.jp/2017/node/1469 © Toshihiro Suzuki 2017 38
ࠓͨ͜͠ͱ — ςετͷ҆ఆԽͱߴԽ — CarthageҠߦ — BitriseҠߦ © Toshihiro Suzuki
2017 39
End © Toshihiro Suzuki 2017 40
Toshihiro Suzuki Feel free to reach out! Twitter: @toshi0383 GitHub:
@toshi0383 Qiita: @toshi0383 Email:
[email protected]
© Toshihiro Suzuki 2017 41