Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
https://twitter.com/RamiRantala
https://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 Request
REVIEWER
Merges
CI Build to
HockeyappReview
Merge to master Tag Build
Upload to...
Fastlane
Fastlane works with Android
..and even with Gradle
Release Candidate
Automation
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 plist
...
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 fu...
Level 2
Development
in feature
branch
Pull Request
DEVELOPER
Merges
CI Build to
HockeyappReview
Merge to master Build Tag
Upload t...
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 Request
Merge to
develop
CI Build to
HockeyappReview
Build Tag
Upload to
Testflight
Tag...
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
...
Build Tag
Upload to
Testflight
Send Release
Note
Submit if there is
no build in
process
Upload
symbols to
Hockeyapp
Create...
Check if
release went
live
Get version
Mark version
as release in
github
Bump version
in plist
New Mega
Report
After relea...
What is difficult?
What have we learned?
Apple review time
Typically 2-3 days, sometimes even longer
You can’t have several versions in review at the same
time
And...
Managerial mind
“Feature Freeze”
“Release Management”
“Release Plans”
Test automation and testing in general
Creating automated tests takes time
Running automated tests takes time
Only develop...
What next?
Thank you.
Continuous Delivery for Mobile platforms (iOS and a bit of Android)
Continuous Delivery for Mobile platforms (iOS and a bit of Android)
Continuous Delivery for Mobile platforms (iOS and a bit of Android)
Continuous Delivery for Mobile platforms (iOS and a bit of Android)
Continuous Delivery for Mobile platforms (iOS and a bit of Android)
Continuous Delivery for Mobile platforms (iOS and a bit of Android)
Continuous Delivery for Mobile platforms (iOS and a bit of Android)
Continuous Delivery for Mobile platforms (iOS and a bit of Android)
Continuous Delivery for Mobile platforms (iOS and a bit of Android)
Continuous Delivery for Mobile platforms (iOS and a bit of Android)
Upcoming SlideShare
Loading in …5
×

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

198 views

Published on

Slides for presentation kept in Devops Finland meetup 18.10.2016 It presents the journey Zalando Helsinki had towards the Continuous Delivery on iOS and bit on Android.

https://www.meetup.com/devops-finland/events/234659906/

Published in: Software
  • Be the first to comment

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

  1. 1. https://twitter.com/RamiRantala https://www.linkedin.com/in/ramirantala
  2. 2. Continuous Delivery in mobile Is it even possible?
  3. 3. 10 developers from different teams No testers - No QA department - No iOS team
  4. 4. Gradle + Xcode plugin ..and Appium tests that were always broken
  5. 5. forks vs. branches
  6. 6. Continuous Integration was quickly in place
  7. 7. Development in feature branch Pull Request Merge CI Build to HockeyappReview Tag
  8. 8. RELEASE
  9. 9. Who will build RC? Who will merge to master? Who will upload it? ..AND WHY DO YOU RELEASE ON FRIDAY EVENING!?
  10. 10. It usually fired back on Monday.
  11. 11. Level 1
  12. 12. Development in feature branch Pull Request REVIEWER Merges CI Build to HockeyappReview Merge to master Tag Build Upload to Testflight Tag Submit
  13. 13. Fastlane
  14. 14. Fastlane works with Android ..and even with Gradle
  15. 15. Release Candidate Automation
  16. 16. We automated RC build and upload from Master
  17. 17. How do you manage build numbers? How do you know which CI is which RC?
  18. 18. 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 plist Buildnumber added to the end 2.6.0.132 Tags CI-2.6.0.132 and RC-2.6.0.132
  19. 19. Same build and source code twice to testflight? 2.6.0.13200 2.6.0.13201
  20. 20. Slack integration: - build ci - build rc latest - build rc tag - submit rc latest - set version - jenkins status - have fun - phantom
  21. 21. Level 2
  22. 22. Development in feature branch Pull Request DEVELOPER Merges CI Build to HockeyappReview Merge to master Build Tag Upload to Testflight Tag Submit
  23. 23. Daily Release Candidates
  24. 24. How do you merge master daily? Who will do it daily? Should you automate it?
  25. 25. We gave up master branch
  26. 26. Level 3
  27. 27. Development in feature branch Pull Request Merge to develop CI Build to HockeyappReview Build Tag Upload to Testflight Tag Send Release Note and create github release Submit Upload symbols to Hockeyapp
  28. 28. How do you know what you have in build? How do you know when to release?
  29. 29. Pull Request Checks
  30. 30. Slaves
  31. 31. Huge attitude changer
  32. 32. Level 4
  33. 33. Download language keys Check if they differ Commit Trigger new CI Separate track for language changes
  34. 34. 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
  35. 35. 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)
  36. 36. Check if release went live Get version Mark version as release in github Bump version in plist New Mega Report After release automation
  37. 37. What is difficult? What have we learned?
  38. 38. Apple review time Typically 2-3 days, sometimes even longer You can’t have several versions in review at the same time Android does not have review time
  39. 39. Managerial mind “Feature Freeze” “Release Management” “Release Plans”
  40. 40. Test automation and testing in general Creating automated tests takes time Running automated tests takes time Only developers can create and develop tests fast UI tests are constantly broken Developers won’t create tests if you use technologies they are unfamiliar with
  41. 41. What next?
  42. 42. Thank you.

×