2016
Rangle.io
129 Spadina Ave., Suite 600
Toronto, ON
M5V 2L3
Canada
evan@rangle.io
Fixing Continuous Delivery for Mobile
Evan Schultz
Javascript Architect
rangle.io
@e_p82
@rangleio
Twitter:
Continuous Integration
Continuous Delivery
Continuous Deployment
what is continuous delivery?
“Build” multiple days times per day / after every merge.
Add unit tests, linting, beautification, etc.
Linked together with a tools such as Gulp.
Many solutions. We like CircleCI.
Why? To keep master “clean” and “working”.
continuous integration
Producing something of value* at frequent intervals.
Keeping master deployable.
continuous delivery
Actually deploying “deployable” code.
Can be tricky on the backend, easy for the front end…
excluding mobile apps.
continuous deployment
Why Do Continuous
Deployment?
continuous deployment = better Agile
CD Agile
Build what is actually needed.
discuss working software
focus on what's next
ruthlessly prioritize
Avoid work in progress.
Save Money
Realize ROI and learning earlier
Deliver 80% of the value with 20% of the effort.
Like Agile, it helps…
Deliver Early for Value and/or Learning
Image by xoque
Lean
towards
learning
(lean
startup)
Lean
towards
tangible
value
(classic
scrum)
Good user stories/feature slicing
Limit WIP
Reduce cycle time
How to Achieve CD In General?
Buggy Software = Work in Process
Deferred Bug Fixing Costs More
Ergo, leaving testing to testers is often problematic.
Effectively, you end up with a mini-waterfall inside the
iteration.
We aim for truly continuous delivery, where every merge is
deployable.
So, how do you approach testing?
Short answer: testing is everyone’s job.
This raises the urgency of deploying your software.
Again… Deferred Bug Fixing Costs More
Rangle Flow
Cycle time
WIP
If these are high, debug the process.
How to Measure if CD is Working
Issues that Arise
Handoffs
driving
Rework
Design Development
TestingFeedback
Life of A Pull Request
Testing is one of the biggest lags
Design too, often due to regressions found during
development.
Access to running code on device is essential.
Cost of fixing bugs?
The impact of PRs stacking is massive.
UX Design Dev Design Test
Solution
Designer works with the team
Pair designing as well as pair programming when friction
occurs
Relentlessly measure WIP and Cycle Time and fix issues
expect team to need time to ramp up
automate everything
understand the value (tacit knowledge)
Solutions in the Team
PRs need to be closed in < x hrs
What is x? It depends on when you feel friction or pain
WIP goes up? It usually means PRs not being closed
This results in more development against slightly different
codebases
This means more regressions
So…
Solutions in the CD Pipeline
Define
Prepare
Minutes Count
Builds take time
Deploys take time
Testers can't be immediately available
Massive impact on flow, leading to…
Bigger PRs
Longer PRs
More regressions, more testing
But…
CodePush
Circle CI
Heroku-style PR deploys
deploy different PRs as needed
which enables to…
Our Solution
Hot push across dev
lifecycle
phonegap-plugin-contentsync
Ionic push
nordnet cordova-hot-code-push
Microsoft Code Push
Rangle Cordwood
It’s too much! But we wanted hot push across dev lifecycle.
But…lots of Recent Hot Push Solutions
Cordwood
CircleCI hooks
Per-PR hot push
client-side UI to pick PRs
deploy once, and presto! On
demand device config for testing
across the dev. lifecycle
but Cordwood is dead (more
later)
Cordwood has…
Define
Prepare
We killed it.
Many options arose at same time
so it didn’t make sense to
continue
Our goal: a solution that worked
across all our JavaScript mobile
projects
Lots of Recent Hot Push Solutions
CodePush
https://microsoft.github.io/code-push/
Handles the push well
No solution for per-PR pushes
Circle-CI, some node scripts, and some API digging
solved this.
https://github.com/rangle/code-push-demo
CodePush
Now in slow motion…
That’s it!
https://github.com/rangle/code-push-demo
https://microsoft.github.io/code-push/
Thank You
Evan Schultz


evan@rangle.io
@e_p82
@rangleio
129 Spadina Ave., Suite 600

Toronto, ON M5V 2L3 

Canada

Fixing Continuous Delivery For Mobile