Continuous
Delivery
with Ease
Let me
run a command
Before
- 1-2 builds a day
- 5-15 minutes per build
After
- 5-20 builds a day
- 0* seconds per build
Quad Programming
Ingredients
- agile development process
- automated unit and functional tests
- VCS, obviously
- continuous integration server
- app testing platform
Communication
is the key
Acceptance criteria
Definition of Done
Definition of Ready
Kanban?
- Visualization
- Work in progress
- Lead/cycle time
Zero bugs tolerance
Automate communication?
Automated testing
- Espresso
- Spock
Version Control System
Git Flow
- master
- develop
- release && hotfix
- feature || flag
Release
git stash git checkout ... # update version in build.gradle or elsewhere git commit ... git checkout ... git merge ... git tag ... git checkout ... git merge ... git branch ... git push git push ...
Continuous Integration
Travis
- hosted
- paid
- YAML
- bash, gradle
Jenkins
- BYOM
- "free"
- GUI
- plugins for everything
Continuous Integration
Travis setup
language: android android: components: - build-tools-21.1.2 - extra-android-m2repository
Security & Trust
env: global: - secure: l9oaircRM9VBHMbt... - secure: dg14m8/CNWGdvpqP... openssl aes-256-cbc -d -k "$file_password" -in ci/app.keystore.enc -out ci/app.keystore
App testing platform
15 - 30 minutes
Testfairy
- modifies APK
- powerful stats
- screen recording
Crashlytics
- testers need to install Crashlytics app
- organizations
App testing platform
How?
curl https://app.testfairy.com/api/upload -F api_key="$testfairy_key" -F file=path/to/app-staging-debug.apk -F testers_groups='staging' -F comment="$COMMENT"
Delivery
~2 hours
API for Google Play?
sudo pip install google-api-python-client python basic_upload_apks.py com.vielengames path/to/app-production-release.apk
Android
iOS?
Need working example?
Let us
look at the results
TU && Q || A
Continuous Delivery with Ease / DroidCon Tunisia 2015
By Maciej Górski
Continuous Delivery with Ease / DroidCon Tunisia 2015
- 2,416