Slide 1

Slide 1 text

                                Good practices for iOS releases @adhumi, Bonsaï, Paris Trainline Engineering Summit, June 2017

Slide 2

Slide 2 text

Release

Slide 3

Slide 3 text

? Release

Slide 4

Slide 4 text

Release early, release often →

Slide 5

Slide 5 text

Release early, release often → Painless releases → Test your release → Take care of it → Market it →

Slide 6

Slide 6 text

                                Release early, release often

Slide 7

Slide 7 text

time based Release cycles are usually feature based or

Slide 8

Slide 8 text

Feature based Group features in a single release – Unified set of features – Unknown frequency – Delay risks

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

Release Train

Slide 12

Slide 12 text

vn vn+1

Slide 13

Slide 13 text

A vn vn+1

Slide 14

Slide 14 text

A B vn vn+1

Slide 15

Slide 15 text

A B C vn vn+1

Slide 16

Slide 16 text

A B C D vn vn+1

Slide 17

Slide 17 text

D vn vn+1 A B C

Slide 18

Slide 18 text

D vn vn+1 A B C

Slide 19

Slide 19 text

D E vn vn+1 A B C

Slide 20

Slide 20 text

D E F vn vn+1 A B C

Slide 21

Slide 21 text

G D E F vn vn+1 A B C

Slide 22

Slide 22 text

G vn vn+1 A B C D E F

Slide 23

Slide 23 text

⏰?

Slide 24

Slide 24 text

Week1 vn

Slide 25

Slide 25 text

Week1 Week2 Weekn-1 vn

Slide 26

Slide 26 text

Week1 Week2 Weekn-1 Feature freeze,
 beta release, QA vn

Slide 27

Slide 27 text

Week1 Week2 Weekn Weekn-1 vn

Slide 28

Slide 28 text

Week1 Week2 Weekn Weekn-1 Submission vn

Slide 29

Slide 29 text

Week1 Week2 Weekn Weekn+1 Weekn-1 Public release vn

Slide 30

Slide 30 text

Week1 Week2 Weekn Weekn+1 Weekn-1 Feature freeze,
 beta release, QA Submission Public release vn

Slide 31

Slide 31 text

Week1 Week2 Weekn Weekn+1 Weekn-1 vn Week1 Week2 vn+1

Slide 32

Slide 32 text

Weekn Weekn+1 Week1 Week2 Weekn Weekn+1 Weekn-1 vn+1 Week1 Week2 vn+2

Slide 33

Slide 33 text

Weekn Weekn+1 Week1 Week2 Weekn Weekn+1 Weekn-1 vn+2 Week1 Week2 vn+3

Slide 34

Slide 34 text

Kickoff Developm ent QA, beta test & polishing Subm ission Public release w1 w1 → wn-1 wn wn wn+1

Slide 35

Slide 35 text

                                Painless releases

Slide 36

Slide 36 text

Classical release process Code

Slide 37

Slide 37 text

Classical release process Code

Slide 38

Slide 38 text

Classical release process Code Archive

Slide 39

Slide 39 text

Classical release process Code Archive

Slide 40

Slide 40 text

Classical release process Code Archive Binary

Slide 41

Slide 41 text

Classical release process Code Archive Binary

Slide 42

Slide 42 text

Classical release process Code Archive Binary iTunes Connect

Slide 43

Slide 43 text

Classical release process All assets (promotional screenshots and texts) uploaded manually

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

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

Slide 46

Slide 46 text

Classical release process ❌ Nope

Slide 47

Slide 47 text

Script all the things!

Slide 48

Slide 48 text

Script all the things! fastlane → Everything needed exists hidden with Xcode → Fastlane is good, if you like sugar

Slide 49

Slide 49 text

Code Archive Binary iTunes Connect

Slide 50

Slide 50 text

Code Archive Binary iTunes Connect $ ./archive_and_upload

Slide 51

Slide 51 text

Script all the things! Screenshots Title Description Icons Metadatas Release notes

Slide 52

Slide 52 text

Script all the things! Screenshots Title Description Icons Metadatas Release notes ← Autogenerated

Slide 53

Slide 53 text

$ iTMSTransporter upload Script all the things!

Slide 54

Slide 54 text

Continuous deployment?

Slide 55

Slide 55 text

Deploy Deploy Deploy Continuous deployment? Internal only

Slide 56

Slide 56 text

                                Test your release

Slide 57

Slide 57 text

Extensive QA validation before release ✅

Slide 58

Slide 58 text

Beta-test → Real life usages → Real trains → Real travels → Real travelers

Slide 59

Slide 59 text

Beta-test Diversity of beta-testers → Frequent and occasional travelers → Various countries → Various languages → Disabilities

Slide 60

Slide 60 text

Beta-test Build a community

Slide 61

Slide 61 text

                                Market your release

Slide 62

Slide 62 text

Communicate with Apple

Slide 63

Slide 63 text

Thursday

Slide 64

Slide 64 text

                               

Slide 65

Slide 65 text

                                Thanks! @adhumi, Bonsaï, Paris