continuous delivery for mobile platforms (ios and a bit of android)
TRANSCRIPT
https://twitter.com/RamiRantalahttps://www.linkedin.com/in/ramirantala
Continuous Delivery in mobile
Is it even possible?
10 developers from different teams
No testers - No QA department - No iOS team
Gradle + Xcode plugin
..and Appium tests that were always broken
forks vs. branches
Continuous Integration
was quickly in place
Development in feature branch
Pull Request Merge CI Build to HockeyappReview Tag
RELEASE
Who will build RC? Who will merge to master? Who will upload it?
..AND WHY DO YOU RELEASE ON FRIDAY EVENING!?
It usually fired back on Monday.
Level 1
Development in feature branch
Pull RequestREVIEWERMerges
CI Build to HockeyappReview
Merge to master Tag Build Upload to Testflight
Tag
Submit
Fastlane
Fastlane works with Android
..and even with Gradle
Release CandidateAutomation
We automated RC build and upload from Master
How do you manage build numbers?
How do you know which CI is which RC?
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
Same build and source code twice to testflight?
2.6.0.13200
2.6.0.13201
Slack integration:- build ci- build rc latest- build rc tag- submit rc latest- set version- jenkins status- have fun- phantom
Level 2
Development in feature branch
Pull RequestDEVELOPERMerges
CI Build to HockeyappReview
Merge to master Build Tag Upload to Testflight
Tag
Submit
Daily Release Candidates
How do you merge master daily?
Who will do it daily?
Should you automate it?
We gave up master branch
Level 3
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
How do you know what you have in build?
How do you know when to release?
Pull Request Checks
Slaves
Huge attitude changer
Level 4
Download language keys
Check if they differ Commit Trigger
new CI
Separate track for language changes
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
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)
Check if release went live
Get versionMark version as release in github
Bump version in plist
New Mega Report
After release automation
What is difficult?
What have we learned?
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
Managerial mind
“Feature Freeze” “Release Management”“Release Plans”
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
What next?
Thank you.