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
Takeshi Ihara
August 03, 2017
Programming
1.6k
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
620
Sign In with Apple
nonchalant
1
2.4k
iOSDC RejectCon 20180915: Factoryの自動生成によりテストを書きやすくする
nonchalant
1
730
iOSDC 20180902: 小さくはじめる端末管理
nonchalant
2
1k
devsap 20180728: コード生成のススメ
nonchalant
0
130
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
生成 AI 時代のスナップショットテストってやつを見せてあげますよ(α版)
ojun9
0
330
Cyrius ーLinux非依存にコンテナをネイティブ実行する専用OSー
n4mlz
0
270
年間50登壇、単著出版、雑誌寄稿、Podcast出演、YouTube、CM、カンファレンス主催……全部やってみたので面白さ等を比較してみよう / I’ve tried them all, so let’s compare how interesting they are.
nrslib
4
640
The free-lunch guide to idea circularity
hollycummins
0
400
S3ストレージクラスの「見える」「ある」「使える」は全部違う ─ 体験から見た、仕様の深淵を覗く
ya_ma23
0
1.2k
Nuxt Server Components
wattanx
0
230
ローカルで稼働するAI エージェントを超えて / beyond-local-ai-agents
gawa
1
220
GC言語のWasm化とComponent Modelサポートの実践と課題 - Scalaの場合
tanishiking
0
140
「接続」—パフォーマンスチューニングの最後の一手 〜点と点を結ぶ、その一瞬のために〜
kentaroutakeda
5
2.4k
Goの型安全性で実現する複数プロダクトの権限管理
ishikawa_pro
2
1.4k
AI活用のコスパを最大化する方法
ochtum
0
360
「効かない!」依存性注入(DI)を活用したAPI Platformのエラーハンドリング奮闘記
mkmk884
0
290
Featured
See All Featured
Mind Mapping
helmedeiros
PRO
1
140
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
120
The SEO Collaboration Effect
kristinabergwall1
0
410
Code Reviewing Like a Champion
maltzj
528
40k
Being A Developer After 40
akosma
91
590k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
160
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
940
How to Talk to Developers About Accessibility
jct
2
170
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
250
Documentation Writing (for coders)
carmenintech
77
5.3k
Bash Introduction
62gerente
615
210k
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ΤϯδχΞҎ֎Ͱࣗ༝ʹͰ͖ΔΑ ͏ʹͳͬͨ • ଞͷνʔϜʹڞ༗ͨ͠ΒࣾͰ·ͬͨ • ࣗಈԽָ͍͠