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
Good practices for iOS releases
Search
Adrien Humilière
June 21, 2017
Programming
0
200
Good practices for iOS releases
Adrien Humilière
June 21, 2017
Tweet
Share
More Decks by Adrien Humilière
See All by Adrien Humilière
Build an iOS app from an iPad
adhumi
0
24
Something about Xcode ^^
adhumi
0
110
Inside Brut.
adhumi
0
81
Localization done bien
adhumi
1
240
Test and distribute an iOS app with Gitlab CI
adhumi
0
340
Pushing Forward iOS Notifications
adhumi
0
180
What's new in iOS 9
adhumi
0
270
Rebranding an iOS app
adhumi
0
240
Cocoapods for private libraries
adhumi
0
120
Other Decks in Programming
See All in Programming
App Router 悲喜交々
quramy
7
370
ポケモンで考えるコミュニケーション / Communication Lessons from Pokémon
mackey0225
4
140
全方位強化 Python 服務可觀測性:以 FastAPI 和 Grafana Stack 為例
blueswen
1
360
Frontend Magic mit CSS Houdini
joergneumann
0
420
M5Stackボードの選び方
tanakamasayuki
0
200
Go製CLIツールGatling Commanderによる負荷試験実施の自動化
okmtz
3
650
標準ライブラリの動向とイテレータのパフォーマンス
makki_d
3
190
Cloud Adoption Frameworkにみる組織とクラウド導入戦略(縮小版)
tomokusaba
1
160
What is TDD?
urakawa_jinsei
1
200
RDBの世界をぬりかえていくモデルグラフDB〜truncus graphによるモデルファースト開発〜
jurabi
0
150
実践Dash - 手を抜きながら本気で作るデータApplicationの基本と応用 / Dash for Python and Baseball
shinyorke
2
220
ビット演算の話 / Let's play with bit operations
kaityo256
PRO
3
150
Featured
See All Featured
Happy Clients
brianwarren
97
6.6k
Navigating Team Friction
lara
183
14k
GraphQLの誤解/rethinking-graphql
sonatard
65
9.9k
Large-scale JavaScript Application Architecture
addyosmani
509
110k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
23
1.7k
Put a Button on it: Removing Barriers to Going Fast.
kastner
58
3.4k
Bash Introduction
62gerente
608
210k
What's new in Ruby 2.0
geeforr
341
31k
What's in a price? How to price your products and services
michaelherold
243
11k
Building an army of robots
kneath
302
42k
The Power of CSS Pseudo Elements
geoffreycrofte
71
5.3k
A designer walks into a library…
pauljervisheath
201
24k
Transcript
Good practices for iOS releases @adhumi, Bonsaï, Paris Trainline Engineering Summit, June 2017
Release
? Release
Release early, release often →
Release early, release often → Painless releases → Test your
release → Take care of it → Market it →
Release early, release often
time based Release cycles are usually feature based or
Feature based Group features in a single release – Unified
set of features – Unknown frequency – Delay risks
Time based Calendar schedule Frequency depends on your needs –
Expected by all parties – Set schedules – Pushes iterative development – Risk of too much/little time – Risk of too much/little features
None
Release Train
vn vn+1
A vn vn+1
A B vn vn+1
A B C vn vn+1
A B C D vn vn+1
D vn vn+1 A B C
D vn vn+1 A B C
D E vn vn+1 A B C
D E F vn vn+1 A B C
G D E F vn vn+1 A B C
G vn vn+1 A B C D E F
⏰?
Week1 vn
Week1 Week2 Weekn-1 vn
Week1 Week2 Weekn-1 Feature freeze, beta release, QA vn
Week1 Week2 Weekn Weekn-1 vn
Week1 Week2 Weekn Weekn-1 Submission vn
Week1 Week2 Weekn Weekn+1 Weekn-1 Public release vn
Week1 Week2 Weekn Weekn+1 Weekn-1 Feature freeze, beta release, QA
Submission Public release vn
Week1 Week2 Weekn Weekn+1 Weekn-1 vn Week1 Week2 vn+1
Weekn Weekn+1 Week1 Week2 Weekn Weekn+1 Weekn-1 vn+1 Week1 Week2
vn+2
Weekn Weekn+1 Week1 Week2 Weekn Weekn+1 Weekn-1 vn+2 Week1 Week2
vn+3
Kickoff Developm ent QA, beta test & polishing Subm ission
Public release w1 w1 → wn-1 wn wn wn+1
Painless releases
Classical release process Code
Classical release process Code
Classical release process Code Archive
Classical release process Code Archive
Classical release process Code Archive Binary
Classical release process Code Archive Binary
Classical release process Code Archive Binary iTunes Connect
Classical release process All assets (promotional screenshots and texts) uploaded
manually
Classical release process All assets (promotional screenshots and texts) uploaded
manually 5 images 5 languages 6 devices → 150 screenshots Title Description Release notes… → ×5 languages
Classical release process All assets (promotional screenshots and texts) uploaded
manually Clic. clic. 5 images 5 languages 6 devices → 150 screenshots Title Description Release notes… → ×5 languages + tons of copy paste
Classical release process ❌ Nope
Script all the things!
Script all the things! fastlane → Everything needed exists hidden
with Xcode → Fastlane is good, if you like sugar
Code Archive Binary iTunes Connect
Code Archive Binary iTunes Connect $ ./archive_and_upload
Script all the things! Screenshots Title Description Icons Metadatas Release
notes
Script all the things! Screenshots Title Description Icons Metadatas Release
notes ← Autogenerated
$ iTMSTransporter upload Script all the things!
Continuous deployment?
Deploy Deploy Deploy Continuous deployment? Internal only
Test your release
Extensive QA validation before release ✅
Beta-test → Real life usages → Real trains → Real
travels → Real travelers
Beta-test Diversity of beta-testers → Frequent and occasional travelers →
Various countries → Various languages → Disabilities
Beta-test Build a community
Market your release
Communicate with Apple
Thursday
Thanks! @adhumi, Bonsaï, Paris