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
Otemachi.swift x Kyobashi.swift #01: 「fastlane ...
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Takeshi Ihara
August 03, 2017
Programming
1.7k
1
Share
Otemachi.swift x Kyobashi.swift #01: 「fastlane x Jenkins」でアプリ配布を自動化してみた
https://nikkei.connpass.com/event/62123/
Takeshi Ihara
August 03, 2017
More Decks by Takeshi Ihara
See All by Takeshi Ihara
iOSDC20200921: Feature Flagを適切に分類することでA/Bテストの運用コストを下げる
nonchalant
3
1.4k
iOSDC 20190906: 動画アプリの投げ銭機能における 消耗型課金の仕組みと実装
nonchalant
3
6.3k
iOSDC 20190906: 動画アプリの投げ銭機能における 消耗型課金の仕組みと実装 with 発表ノート
nonchalant
2
630
Sign In with Apple
nonchalant
1
2.4k
iOSDC RejectCon 20180915: Factoryの自動生成によりテストを書きやすくする
nonchalant
1
740
iOSDC 20180902: 小さくはじめる端末管理
nonchalant
2
1k
devsap 20180728: コード生成のススメ
nonchalant
0
140
potatotips #50: iOSは自動生成の夢を見るか?
nonchalant
0
2k
try! Swift Tokyo 2018: Best Docker Container in Swift
nonchalant
1
1.4k
Other Decks in Programming
See All in Programming
Signal Forms: Beyond the Basics @ngBaguette 2026 in Paris
manfredsteyer
PRO
0
180
さぁV100、メモリをお食べ・・・
nilpe
0
120
Technical Debt: Understanding it Rightly, Engaging it Rightly #LaravelLiveJP
shogogg
0
180
技術記事、AIに書かせるか、自分で書くか? 〜それでも私が自分の手で書く理由〜 / #QiitaConference
jnchito
2
1.2k
PHPで使える日時の表現と、その知り方 #frontend_phpcon_do
o0h
PRO
0
140
CSC307 Lecture 17
javiergs
PRO
0
290
Why Laravel apps break—Mastering the fundamentals to keep them maintainable
kentaroutakeda
1
320
生成AI時代にこそ効くGo | Why Go Works in the Age of Generative AI
mom0tomo
8
3k
気づいたらRubyで100作品 ー クリエイティブコーディングが生活の一部になるまで / 100 Ruby Sketches Later: How Creative Coding Became Part of My Life
chobishiba
3
500
Inspired By RubyKaigi (EN)
atzzcokek
0
460
AI駆動開発で崩れていくコードベースを立て直す
kyoko_nr_nr
1
400
初めてのRubyKaigiはこう見えた
jellyfish700
0
370
Featured
See All Featured
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
230
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Six Lessons from altMBA
skipperchong
29
4.3k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.3k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
1
330
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
190
Product Roadmaps are Hard
iamctodd
PRO
55
12k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.3k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
200
New Earth Scene 8
popppiees
3
2.3k
The agentic SEO stack - context over prompts
schlessera
0
790
Why Our Code Smells
bkeepers
PRO
340
58k
Transcript
ʮfastlane x JenkinsʯͰ ΞϓϦΛࣗಈԽͯ͠Έͨ @nonchalant0303 Otemachi.swift x Kyobashi.swift
ࣗݾհ • Takeshi Ihara • Recruit Marketing Partners • iOS
Engineer • Twitter: @nonchalant0303 • GitHub: Nonchalant
OSS
Kyobashi.swift
ΞϓϦ %FCVH *O)PVTF 3FMFBTF %FW4FSWFS ։ൃ 2" 4UH4FSWFS ։ൃ 2"
1SPE4FSWFS ։ൃ 2" "QQ4UPSF
͜Ε·ͰͷΞϓϦ 1. Archiveͯ͠.ipaϑΝΠϧΛੜ 2. DeployGateʹΞοϓσʔτ
Archiveத͕ ઐ༗͞Εͯ։ൃͰ͖ͳ͍
ͦ͏ͩɺࣗಈԽͩ
None
fastlane iOSɾAndroidΞϓϦͷϏϧυɺςετɺσϓ ϩΠΛߦ͏ͨΊͷRubyͷλεΫϥϯφʔ
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] )
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] )
͜Ε͚ͩʂ
ࣗಈԽग़དྷͨʁ
खݩͰΒͤͨΒ ઐ༗͞Εͯ͠·͏
None
None
Jenkinsͷઃఆ - ϒϥϯνͷࢦఆ - αʔόʔͷ͖ઌΛࢦఆ - ςετͷ࣮ߦՄ൱ ্ͷ3ͭΛઃఆͰ͖ΔΑ͏ʹύϥϝʔλʔΛઃఆ
JenkinsͱGitHubͷ࿈ܞ JenkinsͷGit Plugin - ಛఆͷϒϥϯνͷมߋΛϙʔϦϯάͰࢹ - developϒϥϯνʹมߋ͕͋ͬͨ߹ - Dev Server
+ InHouseΛ
None
͜ΕͰ։ൃޮ㽉
ߋͳΔվળ&ࣗಈԽ
1. ΞϓϦ্͕ॻ͔ΕΔ ผαʔόʔͷ֬ೝ࣌ʹຖճDLͨ͘͠ͳ͍ ↓ αʔόʔຖʹΞϓϦΛׂ͢Δ (Bundle IdentifierΛมߋ͢Δ)
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'" )
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Λࠩ͠ସ͑Δ
2. αʔόʔͷ͖ઌ͕͔Β ͳ͍ ىಈ͢Δલʹαʔόʔͷ͖ઌΛΓ͍ͨ ↓ ΞΠίϯͰαʔόʔͷ͖ઌ͕͔ΔΑ͏ʹ ࠩ͠ସ͑Δ
2. αʔόʔͷ͖ઌ͕͔Β ͳ͍ last_commit_hash = last_git_commit[:abbreviated_commit_hash] badge( shield: last_commit_hash, custom:
"fastlane/badge/dev_badge_dark.png" )
3. iTunes ConnectͷΞοϓ ϩʔυࣗಈԽ͍ͨ͠ खݩͰArchiveͨ͘͠ͳ͍ ↓ fastlaneͷactionͷpilotͰ࣮ݱ
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ΞΧϯτͰ ͋Β͔͡ΊϩάΠϯ͓ͯ͘͠
4. ਃ߲ࣗಈԽ͍ͨ͠ iTunes ConnectΛ։͖ͨ͘ͳ͍ (ॏ͍) ↓ fastlaneͷactionͷdeliverͰ࣮ݱ
4. ਃ߲ࣗಈԽ͍ͨ͠ - deliver initͰݱࡏͷਃ߲͕ੜ - deliverͰ্ॻ͖
·ͱΊ %FCVH *O)PVTF 3FMFBTF %FW4FSWFS ։ൃ 2" 4UH4FSWFS ։ൃ 2"
1SPE4FSWFS ։ൃ 2" "QQ4UPSF
·ͱΊ • iOSΤϯδχΞҎ֎Ͱࣗ༝ʹͰ͖ΔΑ ͏ʹͳͬͨ • ଞͷνʔϜʹڞ༗ͨ͠ΒࣾͰ·ͬͨ • ࣗಈԽָ͍͠