continuous delivery for mobile platforms (ios and a bit of android)

52
https://twitter.com/RamiRantala https://www.linkedin.com/in/ramirantala

Upload: rami-rantala

Post on 12-Jan-2017

115 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Continuous Delivery for Mobile platforms (iOS and a bit of Android)

https://twitter.com/RamiRantalahttps://www.linkedin.com/in/ramirantala

Page 2: Continuous Delivery for Mobile platforms (iOS and a bit of Android)

Continuous Delivery in mobile

Is it even possible?

Page 3: Continuous Delivery for Mobile platforms (iOS and a bit of Android)
Page 4: Continuous Delivery for Mobile platforms (iOS and a bit of Android)

10 developers from different teams

No testers - No QA department - No iOS team

Page 5: Continuous Delivery for Mobile platforms (iOS and a bit of Android)

Gradle + Xcode plugin

..and Appium tests that were always broken

Page 6: Continuous Delivery for Mobile platforms (iOS and a bit of Android)

forks vs. branches

Page 7: Continuous Delivery for Mobile platforms (iOS and a bit of Android)
Page 8: Continuous Delivery for Mobile platforms (iOS and a bit of Android)

Continuous Integration

was quickly in place

Page 9: Continuous Delivery for Mobile platforms (iOS and a bit of Android)

Development in feature branch

Pull Request Merge CI Build to HockeyappReview Tag

Page 10: Continuous Delivery for Mobile platforms (iOS and a bit of Android)

RELEASE

Page 11: Continuous Delivery for Mobile platforms (iOS and a bit of Android)

Who will build RC? Who will merge to master? Who will upload it?

..AND WHY DO YOU RELEASE ON FRIDAY EVENING!?

Page 12: Continuous Delivery for Mobile platforms (iOS and a bit of Android)

It usually fired back on Monday.

Page 13: Continuous Delivery for Mobile platforms (iOS and a bit of Android)

Level 1

Page 14: Continuous Delivery for Mobile platforms (iOS and a bit of Android)

Development in feature branch

Pull RequestREVIEWERMerges

CI Build to HockeyappReview

Merge to master Tag Build Upload to Testflight

Tag

Submit

Page 15: Continuous Delivery for Mobile platforms (iOS and a bit of Android)

Fastlane

Page 16: Continuous Delivery for Mobile platforms (iOS and a bit of Android)
Page 17: Continuous Delivery for Mobile platforms (iOS and a bit of Android)
Page 18: Continuous Delivery for Mobile platforms (iOS and a bit of Android)
Page 19: Continuous Delivery for Mobile platforms (iOS and a bit of Android)

Fastlane works with Android

..and even with Gradle

Page 20: Continuous Delivery for Mobile platforms (iOS and a bit of Android)

Release CandidateAutomation

Page 21: Continuous Delivery for Mobile platforms (iOS and a bit of Android)

We automated RC build and upload from Master

Page 22: Continuous Delivery for Mobile platforms (iOS and a bit of Android)

How do you manage build numbers?

How do you know which CI is which RC?

Page 23: Continuous Delivery for Mobile platforms (iOS and a bit of Android)

Build numbers are kept in sync

CI 132 is from same code than RC 132 - and both are tagged

Version number 2.6.0 from plistBuildnumber added to the end 2.6.0.132Tags CI-2.6.0.132 and RC-2.6.0.132

Page 24: Continuous Delivery for Mobile platforms (iOS and a bit of Android)

Same build and source code twice to testflight?

2.6.0.13200

2.6.0.13201

Page 25: Continuous Delivery for Mobile platforms (iOS and a bit of Android)

Slack integration:- build ci- build rc latest- build rc tag- submit rc latest- set version- jenkins status- have fun- phantom

Page 26: Continuous Delivery for Mobile platforms (iOS and a bit of Android)

Level 2

Page 27: Continuous Delivery for Mobile platforms (iOS and a bit of Android)

Development in feature branch

Pull RequestDEVELOPERMerges

CI Build to HockeyappReview

Merge to master Build Tag Upload to Testflight

Tag

Submit

Page 28: Continuous Delivery for Mobile platforms (iOS and a bit of Android)
Page 29: Continuous Delivery for Mobile platforms (iOS and a bit of Android)

Daily Release Candidates

Page 30: Continuous Delivery for Mobile platforms (iOS and a bit of Android)

How do you merge master daily?

Who will do it daily?

Should you automate it?

Page 31: Continuous Delivery for Mobile platforms (iOS and a bit of Android)

We gave up master branch

Page 32: Continuous Delivery for Mobile platforms (iOS and a bit of Android)

Level 3

Page 33: Continuous Delivery for Mobile platforms (iOS and a bit of Android)

Development in feature branch

Pull RequestMerge to develop

CI Build to HockeyappReview

Build Tag Upload to Testflight

Tag

Send Release Note and create github release

Submit

Upload symbols to Hockeyapp

Page 34: Continuous Delivery for Mobile platforms (iOS and a bit of Android)

How do you know what you have in build?

How do you know when to release?

Page 35: Continuous Delivery for Mobile platforms (iOS and a bit of Android)
Page 36: Continuous Delivery for Mobile platforms (iOS and a bit of Android)

Pull Request Checks

Page 37: Continuous Delivery for Mobile platforms (iOS and a bit of Android)
Page 38: Continuous Delivery for Mobile platforms (iOS and a bit of Android)
Page 39: Continuous Delivery for Mobile platforms (iOS and a bit of Android)
Page 40: Continuous Delivery for Mobile platforms (iOS and a bit of Android)

Slaves

Page 41: Continuous Delivery for Mobile platforms (iOS and a bit of Android)

Huge attitude changer

Page 42: Continuous Delivery for Mobile platforms (iOS and a bit of Android)

Level 4

Page 43: Continuous Delivery for Mobile platforms (iOS and a bit of Android)

Download language keys

Check if they differ Commit Trigger

new CI

Separate track for language changes

Page 44: Continuous Delivery for Mobile platforms (iOS and a bit of Android)

Dev in Feature Branch

Pull Request

Merge to develop

CI Build to Hockey

Review and QA

Tag

Smoke tests Unit tests SwiftLint PR Build to Hockeyapp

Tests

CI automation for every commit

Page 45: Continuous Delivery for Mobile platforms (iOS and a bit of Android)

Build Tag Upload to Testflight

Send Release Note

Submit if there is no build in process

Upload symbols to Hockeyapp

Create Mega Report

Daily Release Automation (nightly)

Page 46: Continuous Delivery for Mobile platforms (iOS and a bit of Android)

Check if release went live

Get versionMark version as release in github

Bump version in plist

New Mega Report

After release automation

Page 47: Continuous Delivery for Mobile platforms (iOS and a bit of Android)

What is difficult?

What have we learned?

Page 48: Continuous Delivery for Mobile platforms (iOS and a bit of Android)

Apple review time

Typically 2-3 days, sometimes even longerYou can’t have several versions in review at the same time

Android does not have review time

Page 49: Continuous Delivery for Mobile platforms (iOS and a bit of Android)

Managerial mind

“Feature Freeze” “Release Management”“Release Plans”

Page 50: Continuous Delivery for Mobile platforms (iOS and a bit of Android)

Test automation and testing in general

Creating automated tests takes timeRunning automated tests takes timeOnly developers can create and develop tests fastUI tests are constantly brokenDevelopers won’t create tests if you use technologies they are unfamiliar with

Page 51: Continuous Delivery for Mobile platforms (iOS and a bit of Android)

What next?

Page 52: Continuous Delivery for Mobile platforms (iOS and a bit of Android)

Thank you.