Slide 1

Slide 1 text

AbemaTV iOSνʔϜʹ͓͚Δܧ ଓతφϯτΧʹ͍ͭͯ iOS Test Night #5 Jul 26, 2017 Toshihiro Suzuki © Toshihiro Suzuki 2017 1

Slide 2

Slide 2 text

whoami — ླ໦ ढ़༟ (@toshi0383) — iOS/tvOS Dev at AbemaTV — αόή, F1, ΠϯυΧϨʔ — ৽ถύύ (΋͏͙͢3ϲ݄) © Toshihiro Suzuki 2017 2

Slide 3

Slide 3 text

tools and apps © Toshihiro Suzuki 2017 3

Slide 4

Slide 4 text

ࠓ೔͸ CIٴͼ։ൃ؀ڥͷվળΛ௨ͯ͠ಘͨ஌ ݟΛ͓఻͑͠·͢ © Toshihiro Suzuki 2017 4

Slide 5

Slide 5 text

ݱࡏͷঢ়گ © Toshihiro Suzuki 2017 5

Slide 6

Slide 6 text

Swi! ໿8ສߦۙ͘ͷίʔυϕʔε ------------------------------------------------------------------------------- Language files blank comment code ------------------------------------------------------------------------------- Swift 975 15178 10243 77378 © Toshihiro Suzuki 2017 6

Slide 7

Slide 7 text

1944 ςετέʔε Executed 1944 tests, with 0 failures (0 unexpected) in 16.075 (17.243) seconds © Toshihiro Suzuki 2017 7

Slide 8

Slide 8 text

DebugϏϧυ࠷଎ه࿥ — 58ඵ (2017೥7݄ࠒ) - ࣗ෼ͷiMac © Toshihiro Suzuki 2017 8

Slide 9

Slide 9 text

CIςετ࣮ߦ࠷଎ه࿥ — 2෼51ඵ (2017೥4݄ࠒ) - Jenkins on Mac Pro — 6෼13ඵ (2017೥7݄ࠒ) - Bitrise Elite VM © Toshihiro Suzuki 2017 9

Slide 10

Slide 10 text

CI͸΄΅ৗʹάϦʔϯ — ςετέʔεͷमਖ਼๨ΕҎ֎͸΄΅ࣦഊͳ͠ — PR͸ฏۉ10෼ఔ౓(ഽײ֮)ͰϚʔδՄೳͳঢ়ଶʹ — ·͋·͋৺஍Α͍εϐʔυײ © Toshihiro Suzuki 2017 10

Slide 11

Slide 11 text

ࢥ͍ฦͤ͹ © Toshihiro Suzuki 2017 11

Slide 12

Slide 12 text

2017೥3݄ʹAbemaTVʹjoin © Toshihiro Suzuki 2017 12

Slide 13

Slide 13 text

౰࣌νʔϜ๊͕͍͑ͯͨ໰୊ — ֤ࣗखݩͰͷϏϧυ͕10෼Ҏ্͔͔Δ => UIඍमਖ਼ͷΠς Ϩʔγϣϯ଎౓.. — Jenkinsͷςετ͕஗͍ͷͱෆ҆ఆͰͳ͔ͳ͔ϚʔδͰ͖ͳ ͍ => ൒೔ۙ͘ແବʹ͢Δέʔε΋ — Jenkins͕͍ΔMac͕ෆػݏ? => ؀ڥͷϝϯςφϯε࡞ۀ ͰҰ೔௵͢ਓ͕ଓग़ʢओʹࢲʣ © Toshihiro Suzuki 2017 13

Slide 14

Slide 14 text

ରࡦͱͯ͠΍ͬͨ͜ͱ — ςετͷ҆ఆԽͱߴ଎Խ — CarthageҠߦ — BitriseҠߦ © Toshihiro Suzuki 2017 14

Slide 15

Slide 15 text

ରࡦͱͯ͠΍ͬͨ͜ͱ — ςετͷ҆ఆԽͱߴ଎Խ <- — CarthageҠߦ — BitriseҠߦ © Toshihiro Suzuki 2017 15

Slide 16

Slide 16 text

ςετ҆ఆԽͱߴ଎Խ ՝୊ — δϣϒͷ࣮ߦʹ20෼~40෼ — ςετ͕ෆ҆ఆͳ͍ͤͰ͜ΕͷϦτϥΠ͕Կճ΋ଓ͘ — JenkinsͰฒྻ࣮ߦͰ͖ͣɺϏϧυ଴ͪͰେौ଺!" ͜͏͍͏ͷΛͳΜͱ͔͔ͨͬͨ͠ © Toshihiro Suzuki 2017 16

Slide 17

Slide 17 text

ςετ҆ఆԽͱߴ଎Խ ରࡦ — ඇಉظͷ݁ՌΛ௕͘଴͍ͪ͗ͯͨ͢ͷΛमਖ਼ (10ඵ => 1ඵ) — ίϯύΠϧͷߴ଎Խ (͕͔͔࣌ؒͬͯΔͱ͜Ζ͚ͩܕਪ࿦Λ ΍ΊΔ) — 10ճʹ1ճͰ΋ࣦഊ͢Δࢠ͸ϙΠο! (։ൃεϐʔυ > Χό Ϩοδ) — ϏϧυͱςετͦΕͧΕʹλΠϜΞ΢τΛઃఆ (5෼ͱ3෼) © Toshihiro Suzuki 2017 17

Slide 18

Slide 18 text

ରࡦͱͯ͠΍ͬͨ͜ͱ — ςετͷ҆ఆԽͱߴ଎Խ — CarthageҠߦ <- — BitriseҠߦ © Toshihiro Suzuki 2017 18

Slide 19

Slide 19 text

ͳͥCarthageͳͷ͔ʁ — ݱঢ়ଘࡏ͢ΔϥΠϒϥϦ؅ཧπʔϧͷதͰ͸Ұ൪ߴ଎Խ͠ ΍͍͢. — Ϗϧυͨ͠όΠφϦ΍dSYMͳͲΛίϛοτͯ͠ӡ༻͢Δ͜ ͱͰɺCIͰ͸Ϋϩʔϯ͢Δ͚ͩͰࡁΉ. — ϥΠϒϥϦͷϏϧυ͕஗͍ͷΛͳΜͱ͔͔ͨͬͨ͠ (RxSwift 1෼ɺProfobufؔ࿈ 2෼) © Toshihiro Suzuki 2017 19

Slide 20

Slide 20 text

CarthageҠߦͷϋϚΓͲ͜Ζ — ϥΠϒϥϦଆ͕CarthageରԠ͍ͯ͠ͳ͍໰୊ — ϥΠϒϥϦଆͷίʔυʹdebugger౰ͯΒΕͳ͍໰୊ — Info.plistෆ੔߹໰୊ — bcsymbolmapͬͯͳʹ໰୊ — ݹ͍bcsymbolmap͕࢒ͬͯ͠·͏໰୊ — dSYMͰ͔͗͢໰୊ © Toshihiro Suzuki 2017 20

Slide 21

Slide 21 text

ϥΠϒϥϦଆ͕CarthageରԠ͍ͯ͠ͳ͍໰୊ — forkͯ͠ؤுͬͨ. — PRϚʔδͯ͘͠ΕΔέʔε΋͋Δ͕ɺݹ͍όʔδϣϯ࢖͍ ͍ͨ৔߹ͳͲ͸Ͳ͏ͯ͠΋forkΛϝϯς͍ͯ͘͠ඞཁ͋Γ. © Toshihiro Suzuki 2017 21

Slide 22

Slide 22 text

ϥΠϒϥϦଆͷίʔυʹdebugger౰ͯΒΕͳ͍໰୊ CarthageΛ࢖ͬͨϑϨΩγϒϧͳ։ൃ؀ڥͷߏங http://qiita.com/toshi0383/items/e932a2fb2f1469bf95eb © Toshihiro Suzuki 2017 22

Slide 23

Slide 23 text

Info.plistෆ੔߹໰୊ ϥΠϒϥϦͷInfo.plist͕ݪҼͰૺ۰ͨ͠iTunesConnectΞο ϓϩʔυΤϥʔ http://qiita.com/toshi0383/items/6418e70b5c33e2de0d13 CFBundleVersion΍CFBundleShortVersionStringͷ ValidationʹҾ͔͔ͬΔ. ϥΠϒϥϦଆͰͪΌΜͱઃఆͯ͘͠Ε͍ͯΔඞཁ͕͋Δ. © Toshihiro Suzuki 2017 23

Slide 24

Slide 24 text

bcsymbolmapͬͯͳʹ໰୊ — Carthage/Build/iOS ҎԼʹੜ੒͞ΕΔ. — bitcode͕༗ޮͳ৔߹ɺdSYMͱͷඥ෇͚ʹ࢖ΘΕΔΒ͍͠. — ͱΓ͋͑ͣίϛοτ͠ͱ͚͹ok. © Toshihiro Suzuki 2017 24

Slide 25

Slide 25 text

ݹ͍bcsymbolmap͕࢒ͬͯ͠·͏໰୊ — carthage update ͸ಛʹݹ͍bcsymbolmapΛ࡟আͯ͘͠Ε ͨΓ͸͠ͳ͍. — Ϟδϡʔϧ໊Ͱgrepͯ͠࡟আ͢ΔࡶͳεΫϦϓτΛॻ͍ͨ Γͯ͠ӡ༻ͰΧόʔ. © Toshihiro Suzuki 2017 25

Slide 26

Slide 26 text

dSYMͰ͔͗͢໰୊ — GitHubͷϑΝΠϧαΠζ੍ݶ(50MB/1ϑΝΠϧ)ʹҾ͔͔ͬ Δέʔε͋Γ. — ݱঢ়Git LFSͰӡ༻. © Toshihiro Suzuki 2017 26

Slide 27

Slide 27 text

ରࡦͱͯ͠΍ͬͨ͜ͱ — ςετͷ҆ఆԽͱߴ଎Խ — CarthageҠߦ — BitriseҠߦ <- © Toshihiro Suzuki 2017 27

Slide 28

Slide 28 text

Bitriseͱ͸ — ׂͱ࠷ۙग़͖ͯͨCIαʔϏε(SaaS) — Android΍Xamarinʹ΋ରԠ — Linux VM΋͋Δ © Toshihiro Suzuki 2017 28

Slide 29

Slide 29 text

ͳͥBitriseʹͨ͠ͷ͔ʁ — Ϗϧυ͕҆ఆͨ͠ͱͯ͠΋ɺͱʹ͔͘Jenkins৬ਓ͕ඞཁͳ ঢ়ଶΛ୤͔ͨͬͨ͠. — ݕূͷ݁ՌɺBitriseͷElite MachineͳΒΪϦΪϦεϖοΫ ͕ؒʹ߹ͬͨ. © Toshihiro Suzuki 2017 29

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

Bitrise Elite Plan — ·͋·͋ϋΠεϖοΫͳVMΛಉ࣌ʹ3x~ฒྻ࣮ߦՄೳ — ฒྻ਺1ͭ͋ͨΓ$100͕ͩɺx3͕࠷௿ϥΠϯͳͷͰ $300~/ mo ͳ఺ʹ஫ҙ. © Toshihiro Suzuki 2017 31

Slide 32

Slide 32 text

ͪͳΈʹ.. JenkinsΛ࢖͍ଓ͚Δબ୒ࢶ΋͋Γ͑ ͳ͘͸ͳ͔ͬͨ © Toshihiro Suzuki 2017 32

Slide 33

Slide 33 text

JenkinsͰฒྻγϛϡϨʔλ؀ڥ — Macͷϓϩηε਺ͷ্ݶղ์ (pxctestͷυΩϡϝϯτࢀর) — pxctestͰSimulator.app͸ىಈͤͣʹ࣮ߦ͢Δ͜ͱͰϓϩ ηε਺ͷઅ໿ — ςετͷδϣϒͱЌ഑෍ͷδϣϒͰγϛϡϨʔλΛ෼͚ͯࢦ ఆ ࣮ࡍ·͋·͋Α͔ͬͨ. JenkinsΛ࢖͍͜ͳͤ͹΋ͬͱߴ౓ͳ ͜ͱ΋Ͱ͖Δ͸ͣ. © Toshihiro Suzuki 2017 33

Slide 34

Slide 34 text

BitriseҠߦͷצॴ — Makefileͷઃఆྫ (Bitriseͱ௚઀ؔ܎ͳ͍͚Ͳ) — bitrise.yml © Toshihiro Suzuki 2017 34

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

bitrise.yml: workflow ϙΠϯτ - circle.yml΍travis.ymlͱҧ͍ɺίϛοτ͠ͳ͍. - δϣϒΛworkflowͱͯ͠ઃఆ͢Δ. - workflow͸stepͷू·Γ. - slack΁ͷ௨஌΋؆୯ʹ࣮૷Ͱ͖Δ © Toshihiro Suzuki 2017 36

Slide 37

Slide 37 text

bitrise.yml: trigger map ϙΠϯτ - Trigger MapͰࡉ͔͘workflowΛࢦఆͰ͖Δ. © Toshihiro Suzuki 2017 37

Slide 38

Slide 38 text

Bitriseͷࡉ͔͍৘ใʹ͍ͭͯ͸iOSDCͷCfPʹԠืͨ͠ͷͰ ͜͜Ͱ͸ׂѪ ؾʹͳΔਓ͸ͥͻ֦ࢄͷ΄Ͳ! https://iosdc.jp/2017/node/1469 © Toshihiro Suzuki 2017 38

Slide 39

Slide 39 text

ࠓ೔࿩ͨ͜͠ͱ — ςετͷ҆ఆԽͱߴ଎Խ — CarthageҠߦ — BitriseҠߦ © Toshihiro Suzuki 2017 39

Slide 40

Slide 40 text

End © Toshihiro Suzuki 2017 40

Slide 41

Slide 41 text

Toshihiro Suzuki Feel free to reach out! Twitter: @toshi0383 GitHub: @toshi0383 Qiita: @toshi0383 Email: [email protected] © Toshihiro Suzuki 2017 41