Slide 1

Slide 1 text

ʮfastlane x JenkinsʯͰ ΞϓϦ഑෍ΛࣗಈԽͯ͠Έͨ @nonchalant0303 Otemachi.swift x Kyobashi.swift

Slide 2

Slide 2 text

ࣗݾ঺հ • Takeshi Ihara • Recruit Marketing Partners • iOS Engineer • Twitter: @nonchalant0303 • GitHub: Nonchalant

Slide 3

Slide 3 text

OSS

Slide 4

Slide 4 text

Kyobashi.swift

Slide 5

Slide 5 text

ΞϓϦ഑෍෺ %FCVH *O)PVTF 3FMFBTF %FW4FSWFS ։ൃ 2" 4UH4FSWFS ։ൃ 2" 1SPE4FSWFS ։ൃ 2" "QQ4UPSF

Slide 6

Slide 6 text

͜Ε·ͰͷΞϓϦ഑෍ 1. Archiveͯ͠.ipaϑΝΠϧΛੜ੒ 2. DeployGateʹΞοϓσʔτ

Slide 7

Slide 7 text

Archiveத͸୺຤͕ ઐ༗͞Εͯ։ൃͰ͖ͳ͍

Slide 8

Slide 8 text

ͦ͏ͩɺࣗಈԽͩ

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

fastlane iOSɾAndroidΞϓϦͷϏϧυɺςετɺσϓ ϩΠΛߦ͏ͨΊͷRuby੡ͷλεΫϥϯφʔ

Slide 11

Slide 11 text

Dev Server + InHouse gym( scheme: "Scheme", configuration: "InHouse", derived_data_path: "./DerivedData", export_method: "enterprise", clean: true, xcargs: "OTHER_SWIFT_FLAGS='$(inherited) -DDEV_SERVER'" ) deploygate( user: ENV["DEPLOYGATE_USER"], api_token: ENV["DEPLOYGATE_API_TOKEN"], distribution_key: DISTRIBUTION_KEY[conf] )

Slide 12

Slide 12 text

Dev Server + InHouse gym( scheme: "Scheme", configuration: "InHouse", derived_data_path: "./DerivedData", export_method: "enterprise", clean: true, xcargs: "OTHER_SWIFT_FLAGS='$(inherited) -DDEV_SERVER'" ) deploygate( user: ENV["DEPLOYGATE_USER"], api_token: ENV["DEPLOYGATE_API_TOKEN"], distribution_key: DISTRIBUTION_KEY[conf] )

Slide 13

Slide 13 text

͜Ε͚ͩʂ

Slide 14

Slide 14 text

ࣗಈԽग़དྷͨʁ

Slide 15

Slide 15 text

खݩͰ૸ΒͤͨΒ ઐ༗͞Εͯ͠·͏

Slide 16

Slide 16 text

No content

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

Jenkinsͷઃఆ - ϒϥϯνͷࢦఆ - αʔόʔͷ޲͖ઌΛࢦఆ - ςετͷ࣮ߦՄ൱ ্ͷ3ͭΛઃఆͰ͖ΔΑ͏ʹύϥϝʔλʔΛઃఆ

Slide 19

Slide 19 text

JenkinsͱGitHubͷ࿈ܞ JenkinsͷGit Plugin - ಛఆͷϒϥϯνͷมߋΛϙʔϦϯάͰ؂ࢹ - developϒϥϯνʹมߋ͕͋ͬͨ৔߹ - Dev Server + InHouseΛ഑෍

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

͜ΕͰ։ൃޮ཰㽉

Slide 22

Slide 22 text

ߋͳΔվળ&ࣗಈԽ

Slide 23

Slide 23 text

1. ΞϓϦ্͕ॻ͔ΕΔ໰୊ ผαʔόʔͷ֬ೝ࣌ʹຖճDLͨ͘͠ͳ͍ ↓ αʔόʔຖʹΞϓϦΛ෼ׂ͢Δ (Bundle IdentifierΛมߋ͢Δ)

Slide 24

Slide 24 text

1. ΞϓϦ্͕ॻ͔ΕΔ໰୊ gym( scheme: "Scheme", configuration: "InHouse", derived_data_path: "./DerivedData", export_method: "enterprise", clean: true, xcargs: "OTHER_SWIFT_FLAGS='$(inherited) -DSTG_SERVER' PROVISIONING_PROFILE_SPECIFIER='Provisioning'" )

Slide 25

Slide 25 text

1. ΞϓϦ্͕ॻ͔ΕΔ໰୊ gym( scheme: "Scheme", configuration: "InHouse", derived_data_path: "./DerivedData", export_method: "enterprise", clean: true, xcargs: "OTHER_SWIFT_FLAGS='$(inherited) -DSTG_SERVER' PROVISIONING_PROFILE_SPECIFIER='Provisioning'" ) ഑෍༻ͷ1SPWJTJPOJOH1SPpMFΛࠩ͠ସ͑Δ

Slide 26

Slide 26 text

2. αʔόʔͷ޲͖ઌ͕෼͔Β ͳ͍໰୊ ىಈ͢Δલʹαʔόʔͷ޲͖ઌΛ஌Γ͍ͨ ↓ ΞΠίϯͰαʔόʔͷ޲͖ઌ͕෼͔ΔΑ͏ʹ ࠩ͠ସ͑Δ

Slide 27

Slide 27 text

2. αʔόʔͷ޲͖ઌ͕෼͔Β ͳ͍໰୊ last_commit_hash = last_git_commit[:abbreviated_commit_hash] badge( shield: last_commit_hash, custom: "fastlane/badge/dev_badge_dark.png" )

Slide 28

Slide 28 text

3. iTunes ConnectͷΞοϓ ϩʔυ΋ࣗಈԽ͍ͨ͠ खݩͰArchiveͨ͘͠ͳ͍ ↓ fastlaneͷactionͷpilotͰ࣮ݱ

Slide 29

Slide 29 text

3. iTunes ConnectͷΞοϓ ϩʔυ΋ࣗಈԽ͍ͨ͠ gym( clean: true, configuration: 'Release', scheme: "Scheme", output_directory: "build", output_name: "SchemeRelease", ) pilot( skip_submission: true, skip_waiting_for_build_processing: true ) +FOLJOTϚγϯ্Ͱ%FWFMPQFSΞΧ΢ϯτͰ ͋Β͔͡ΊϩάΠϯ͓ͯ͘͠

Slide 30

Slide 30 text

4. ਃ੥߲໨΋ࣗಈԽ͍ͨ͠ iTunes ConnectΛ։͖ͨ͘ͳ͍ (ॏ͍) ↓ fastlaneͷactionͷdeliverͰ࣮ݱ

Slide 31

Slide 31 text

4. ਃ੥߲໨΋ࣗಈԽ͍ͨ͠ - deliver initͰݱࡏͷਃ੥߲໨͕ੜ੒ - deliverͰ্ॻ͖

Slide 32

Slide 32 text

·ͱΊ %FCVH *O)PVTF 3FMFBTF %FW4FSWFS ։ൃ 2" 4UH4FSWFS ։ൃ 2" 1SPE4FSWFS ։ൃ 2" "QQ4UPSF

Slide 33

Slide 33 text

·ͱΊ • iOSΤϯδχΞҎ֎Ͱ΋ࣗ༝ʹ഑෍Ͱ͖ΔΑ ͏ʹͳͬͨ • ଞͷνʔϜʹڞ༗ͨ͠Βࣾ಺Ͱ޿·ͬͨ • ࣗಈԽָ͍͠