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
  • VCS, obviously
  • automated unit and functional tests
  • continuous integration server
  • app testing platform

Communication

  • Frequent!
  • Asking questions
  • Teaching to ask questions
  • Writing down acceptance criteria

Kanban?

  • Visualization
  • Work in progress
  • Lead/cycle time

Zero bugs tolerance

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.1
  - 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

T && Q || A

Continuous Delivery with Ease / DroidCon Kraków 2014

By Maciej Górski

Continuous Delivery with Ease / DroidCon Kraków 2014

  • 3,563