Build Automation for Mobile. or How to Deliver Quality Apps Continuously. Angelo Rüggeberg



Similar documents
Building, Testing & Deploying Android Apps with Jenkins

Practicing Continuous Delivery using Hudson. Winston Prakash Oracle Corporation

Continuous Delivery for Alfresco Solutions. Satisfied customers and happy developers with!! Continuous Delivery!

Mobile Development with Git, Gerrit & Jenkins

Jenkins Continuous Build System. Jesse Bowes CSCI-5828 Spring 2012

Building, testing and deploying mobile apps with Jenkins & friends

Dominik Helleberg inovex GmbH. Moderne Android Builds mit Gradle

Escaping the Works-On-My-Machine badge Continuous Integration with PDE Build and Git

Hudson Continous Integration Server. Stefan Saasen,

CPSC 491. Today: Source code control. Source Code (Version) Control. Exercise: g., no git, subversion, cvs, etc.)

Continuous Integration and Bamboo. Ryan Cutter CSCI Spring Semester

Jenkins: The Definitive Guide

Continuous Integration and Delivery at NSIDC

INCREASE YOUR WEBMETHODS ROI WITH AUTOMATED TESTING. Copyright 2015 CloudGen, LLC

Mastering Continuous Integration with Jenkins

SUCCESFUL TESTING THE CONTINUOUS DELIVERY PROCESS

Testing Automation for Distributed Applications By Isabel Drost-Fromm, Software Engineer, Elastic

SOFTWARE DEVELOPMENT BASICS SED

Agile ALM. Lightweight tools and Agile strategies MANNING MICHAEL HUTTERMANN. Shelter Island

November 12 th 13 th London: Mastering Continuous Integration with Jenkins

About Me Developer Workspaces Enable Agile Teams

JavaScript Applications for the Enterprise: From Empty Folders to Managed Deployments. George Bochenek Randy Jones

Beginners guide to continuous integration. Gilles QUERRET Riverside Software

Build management & Continuous integration. with Maven & Hudson

Paul Barham Program Manager - Java. David Staheli (dastahel@microsoft.com) Software Development Manager - Java

DevOps Course Content

Continuous Integration using Docker & Jenkins

Continuous Integration and Deployment Modern Technique's

Continuous Integration: Improving Software Quality and Reducing Risk. Preetam Palwe Aftek Limited

WHY CONTINUOUS INTEGRATION SHOULD BE PART OF YOUR MOBILE DEVELOPMENT PROCESS

The Unix-like Build Pattern

Continuous Integration with Jenkins. Coaching of Programming Teams (EDA270) J. Hembrink and P-G. Stenberg [dt08jh8

In depth study - Dev teams tooling

Continuous Integration Processes and SCM To Support Test Automation

Continuous Integration and Delivery. manage development build deploy / release

A central continuous integration platform

Continuous Integration. Wellcome Trust Centre for Gene Regulation & Expression College of Life Sciences, University of Dundee Dundee, Scotland, UK

Copyrighted , Address :- EH1-Infotech, SCF 69, Top Floor, Phase 3B-2, Sector 60, Mohali (Chandigarh),

@jenkinsconf. Maintaining huge Jenkins clusters - Have we reached the limit of Jenkins?

Making Leaders Successful Every Day Forrester Research, Inc. Reproduction Prohibited

Introduction to Android Development. Jeff Avery CS349, Mar 2013

International Journal of Advanced Engineering Research and Science (IJAERS) Vol-2, Issue-11, Nov- 2015] ISSN:

Cross Platform Mobile. -Vinod Doshi

Jenkins User Conference Herzelia, July #jenkinsconf. Testing a Large Support Matrix Using Jenkins. Amir Kibbar HP

Version Control! Scenarios, Working with Git!

Software configuration management

SUCCESFUL TESTING THE CONTINUOUS DELIVERY PROCESS

Image Credit:

Jenkins World Tour 2015 Santa Clara, CA, September 2-3

Software Construction

Mobile Test Automation Framework

Configuration Management Evolution at CERN. Gavin

Submitting UITests at the Command Line

Software Configuration Management Best Practices for Continuous Integration

Building a Continuous Integration Pipeline with Docker

DevOps. Jesse Pai Robert Monical 8/14/2015

Jenkins and Chef Infrastructure CI and Application Deployment

Testing Tools Content (Manual with Selenium) Levels of Testing

Beginner s guide to continuous integration. Gilles QUERRET Riverside Software

USER GUIDE PowerAttachment CRM

Successful PaaS and CI in the Cloud

Content. Development Tools 2(63)

Mobile App Testing. Main challenges, different approaches, one solution

Why Continuous Integration Should be Part of Your Mobile Development Process

Continuous Integration

Open Source in Mobile Test Automation. Ru Cindrea - Altom ru@altom.ro

Continuous Integration Multi-Stage Builds for Quality Assurance

Surround SCM Best Practices

Magento OpenERP Integration Documentation

You ll need to have: It d be great if you have:

Massively! Continuous Integration! A case study for Jenkins at cloud-scale

How To Write A Continuous Delivery

Continuous integration with Jenkins CI

DevOps Stack. Reid Holmes. Chris Parnin:

Version Control Your Jenkins Jobs with Jenkins Job Builder

Agile Austin Dev SIG. June Continuous Integration (CI)

Example of Standard API

Implementation Guide:

CoDe:U Git Flow - a Continuous Delivery Approach

WHITE PAPER. Getting started with Continuous Integration in software development. - Amruta Kumbhar, Madhavi Shailaja & Ravi Shankar Anupindi

The care of open source creatures. Vincent Sanders

TeamCity A Professional Solution for Delivering Quality Software, on Time

Viewpoint. Choosing the right automation tool and framework is critical to project success. - Harsh Bajaj, Technical Test Lead ECSIVS, Infosys

Continuous Integration & Feature Branches

Testing Tools using Visual Studio. Randy Pagels Sr. Developer Technology Specialist Microsoft Corporation

Continuous Delivery. Alejandro Ruiz

DevOps. Building a Continuous Delivery Pipeline

As it relates to Android Studio. By Phil Malone:

Lab 0 (Setting up your Development Environment) Week 1

Automated testing for Mobility New age applications require New age Mobility solutions

Automated Integration Testing & Continuous Integration for webmethods

Microsoft Modern ALM. Gilad Levy Baruch Frei

Continuous Integration

Web Developer Toolkit for IBM Digital Experience

Eclipse Help

2012 Nolio Ltd. All rights reserved

Grunt, Gulp & fabs. Build-System and Development-Workflow for modern Web-Applications

Android: Setup Hello, World: Android Edition. due by noon ET on Wed 2/22. Ingredients.

D Test Strategy

Modern practices TIE-21100/

Transcription:

Build Automation for Mobile or How to Deliver Quality Apps Continuously Angelo Rüggeberg

Things to remember Publishing your App should not be painfull Angelo Rüggeberg Code Quality Matters Angelo Rüggeberg 2

Who am I? Mobile Development Android ios Backend Cloud Infrastructure http://plus.google.com/+angelorüggeberg http://s3xy4ngyc.github.io/ s3xy4ngyc 3

Release Process Current Situation 4

Release Process Current Situation 5

Release Process the future Everything you have to do afterwards is git push 6

Release Process the future 7

Build Automation What will we be using jenkins Test Driven Development Git Beta Distribution Gradle Nightly Versions 8

Build Automation Benefits New Features are Live ASAP As Soon As Pushed Only Stable and Tested Builds can be Pushed No more unstable Releases Less Human Testing No more Sharing of Sensitive Data Keystores Logins 9

Build Automation Jenkins Jenkins is an award-winning application that monitors executions of repeated jobs, such as buildin Building/testing software projects continuously Monitoring executions of externally-run jobs Get Jenkins at: http://jenkins-ci.org/ 10

Build Automation Build Pipeline Sample Build Pipeline: compile lint Tests sonar distribute monkey runner 11

Build Automation Build Pipeline Distribution will only Happen if all Previous Steps Succeed Tests, Code Analysis, etc. can Run Parallel Step by Step enables Failing Fast Resource Hungry Jobs like Monkey Runner will be triggered only if needed 12

Jenkins Usefull Tipps Clone Workspace SCM Plugin Shared Workspaces may have locks https://wiki.jenkins-ci.org/display/jenkins/clone+workspace+scm+plugin Polling Sucks use Git Hooks! Do not run on a Small Virtual Machine Android Emulator needs some Hardware Intel HAX strongly Recommended! 13

Jenkins Build Monitor Plugin 14

Jenkins Build Pipeline View Plugin 15

Jenkins Monitoring Plugins 16

Build Automation gradle Best of ANT / Maven / GANT / Ivy Based on Groovy Scripts Expressive DSL (Flexible) Convention over Configuration Easy to extend Make the impossible possible, make the possible easy and make the easy elegant. 17

gradle flavoring Staging, Dev and Live Packages On Your Test Device no Constant Uninstalling Adjustable Configurations without Code Changes Why? Reproduce able builds, easy setup 18

gradle sample Code 19

gradle sample Code Project Setup Flavoring Same Folder Structure for every Flavor Flavor Specific files Overwrite Files from Main Only Overwrite What your Flavor Needs Flavor Only Files Possible 20

gradle sample Code Example Flavor Specific Manifest Only Provider defined Everything else comes from main/androidmanifest.xml 21

Build Automation git Branching Opensource Integrated and Extended Implementations 22

Git Git Workflow Git Flow Branching Model source: www.atlassian.com 23

Jenkins Git Flow and Jenkins Examples Staging Hook on develop Branch Nightly Time Based Build (eg once a day at 0 AM) builds newest feature Branch Live Only Builds release Tags Release Notes are Tag Message 24

Beta Test Distribution 25

Beta Test Distribution Examples Google Play Alpha / Channel Works on every Device that has The Playstore Crashlytics Distribution Groups & User Level gradle Integration free HokeyApp Comercial 26

Unit Testing WHY? Testing - Do it 27

Unit Testing WHY? 28

Unit Testing WHY? Code Quality Matters! Insurance everything still works As it should be working Refactoring made easy Unittests are somehow a Functional Documentation 29

Unit Testing Some Tipps: Tests first! Simplest and dumbest way to implement Test Orientation Changes Test State Changes Lock Screen Incoming calls etc. Check Code Coverage 30

Test Frameworks Unittests Robolectric No Emulator Needed No Mocking Frameworks Needed API Level Emulation only up to 18 (currently) Robotium Silenium for Android User Scenarios Default Android Testing Framework 31

Test Frameworks UI Testing Espresso Ui Testing Double Espresso Espresso Gradle Port Ui Automator Android Default UI Testing Framework 32

Mocking 33

Test Frameworks Device Testing Distributing instrumentation tests http://square.github.io/spoon/ 34

Test Frameworks Device Testing 35

Test Frameworks Device Testing 36

Test Frameworks Device Testing 37

Build Automation Measure Code Quality Measure Code Quality over Time Duplicated code Coding standards Unit tests Complex code Potential bugs Comments Design and architecture 38

Test Frameworks Code Coverage 39

Test Frameworks Code Coverage 40

Build Automation Static Code Analysis 41

Build Automation Static Code Analysis Testing your Application makes your life more Stress free Code Quality Less Production Crashes Don t develop Stuff that should not go live Use Gradle Flavors! 42

Build Automation Final Thoughts Testing your Application makes your life more Stress free Code Quality Less Production Crashes Don t develop Stuff that should not go live DONE = RELEASED Use Gradle Flavors! 43

Release Process the future 44

>> /etc/