SlideShare a Scribd company logo
Introducing
Continuous Integration
for Android
Is it worth it?
What's inside - unboxing
Who (and how) is pulling the strings
What can we automate
Summary
Agenda
Is it worth it?
What's inside - unboxing
Who (and how) is pulling the strings
What can we automate
Summary
Agenda
Benefits
Time is saved and responsibilities are delegated
- less management and oversight, more regularity
Signing credentials safety
On-a-plate project's health statistics
Immediate information sharing among team's members
- success/failure, health
Benefits
Drawbacks
Initial setup overhead
A server is needed
Drawbacks
Is it worth it?
What's inside - unboxing
Who (and how) is pulling the strings
What can we automate
Summary
Agenda
Components
Components
Setup
Setup (partial diagram)
Is it worth it?
What's inside - unboxing
Who (and how) is pulling the strings
What can we automate
Summary
Agenda
Jenkins
Well known (has many plugins and good support)
For each project there is one or more jobs
A job's execution is called a build
So called build steps allow to chain multiple actions
A finished build can trigger another job
Each job starts a new emulator instance
Jenkins - key facts
Gradle
Currently recommended build tool for Android
Highly flexible, very powerful
Transparent configuration format
Unified building process across machines
Dependencies resolved efficiently
Executes so called tasks, e.g. 'assemble', 'test',
'connectedCheck'
Gradle - key facts
Is it worth it?
What's inside - unboxing
Who (and how) is pulling the strings
What can we automate
Summary
Agenda
Secure signing
Well known (has many plugins and good support)
For each project there is one or more jobs
A job's execution is called a build
So called build steps allow to chain multiple actions
A finished build can trigger another job
Each job starts a new emulator instance
Secure signing
Requirements:
each public build should be signed
signing keys for release builds should be kept safe
Secure signing
Solution:
keep release keys only on the CI server
configure Gradle to use release keys if available
(server case)
otherwise make it use debug keys
(dev's computer case)
Testing
Tests' types:
unit tests
UI tests on an emulator
Testing
Automation gains:
verify codebase frequently to discover new bugs rapidly
run all tests periodically to ensure full regression
compliance
Code quality analysis
Prevents bugs introduction
Improves future development's speed
Encourages good practices
Automatic inspections save developers' time
High-quality code makes developers happy
Code quality analysis
Team notification
Push messages to a Slack channel of choice
Post a job status change
E-mail notifications are also available but…
people tend to ignore those (or mark them as spam)
Team notification
Distribution
Easy APK sharing via Crashlytics (e.g. for QA teams)
Dedicated jobs use only special commits
(e.g. with a release tag)
Distribution
Is it worth it?
What's inside - unboxing
Who (and how) is pulling the strings
What can we automate
Summary
Agenda
Setup
Setup (full diagram)
Jenkins
responsibilities
Fetches the code
Starts an emulator
Starts code analysis (Sonar Runner)
Invokes Gradle (!)
Collects and publishes artifacts and results
- APKs
- reports: lint, tests
Pushes notifications to Slack
Jenkins - responsibilities
Gradle
responsibilities
Builds the app (APK)
Signs the app
Performs Android-specific analysis (lint)
Performs unit tests
Performs UI tests
Gradle - responsibilities
What's next?
Other frameworks for UI tests
- Espresso, Android Testing Support Library
Other tools for continuous integration
- Team City
Direct APKs' upload to Google Play
Running tests on multiple emulators
Customized Slack notifications
What's next?
Thank you for your attention
mail@codete.com www.codete.com
It’s FREE!
SIGN UP FOR WEBINAR

More Related Content

What's hot

Continuous business goal validation
Continuous business goal validationContinuous business goal validation
Continuous business goal validation
Hylke Stapersma
 
Getting to Continuous Deployment (Webinar Slides)
Getting to Continuous Deployment (Webinar Slides)Getting to Continuous Deployment (Webinar Slides)
Getting to Continuous Deployment (Webinar Slides)
Rainforest QA
 
Agile Testing Process
Agile Testing ProcessAgile Testing Process
Agile Testing ProcessIntetics
 
Product delivery Pawel Dyrek
Product delivery Pawel DyrekProduct delivery Pawel Dyrek
Product delivery Pawel Dyrek
Paweł Dyrek
 
How testers add value to the organization appium conf
How testers add value to the organization  appium confHow testers add value to the organization  appium conf
How testers add value to the organization appium conf
Corina Pip
 
Way to Agile - USTH
Way to Agile - USTHWay to Agile - USTH
Way to Agile - USTH
Hien Nguyen
 
The New Agile Testing Quadrants: Bringing Skilled Testers and Developers Toge...
The New Agile Testing Quadrants: Bringing Skilled Testers and Developers Toge...The New Agile Testing Quadrants: Bringing Skilled Testers and Developers Toge...
The New Agile Testing Quadrants: Bringing Skilled Testers and Developers Toge...
Ho Chi Minh City Software Testing Club
 
HPE | Network Virtualization | POC
HPE | Network Virtualization | POCHPE | Network Virtualization | POC
HPE | Network Virtualization | POC
Jeffrey Nunn
 
How to overcome agile methodology challenges
How to overcome agile methodology challengesHow to overcome agile methodology challenges
How to overcome agile methodology challenges
BugRaptors
 
Shift left as first transformation step into Quality Assurance
Shift left as first transformation step into Quality AssuranceShift left as first transformation step into Quality Assurance
Shift left as first transformation step into Quality Assurance
Zbyszek Mockun
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
Hicham El Hammouchi
 
Agile QA process
Agile QA processAgile QA process
Agile QA process
Ashish Agrawal
 
Optimizing Your Agile Testing Processes
Optimizing Your Agile Testing ProcessesOptimizing Your Agile Testing Processes
Optimizing Your Agile Testing Processes
Stanton Champion
 
Role Of Qa And Testing In Agile 1225221397167302 8
Role Of Qa And Testing In Agile 1225221397167302 8Role Of Qa And Testing In Agile 1225221397167302 8
Role Of Qa And Testing In Agile 1225221397167302 8a34sharm
 
Software testing enhance quality and performance of software
Software testing enhance quality and performance of softwareSoftware testing enhance quality and performance of software
Software testing enhance quality and performance of software
Emipro Technologies Pvt. Ltd.
 
What is Agile Testing? Edureka
What is Agile Testing? EdurekaWhat is Agile Testing? Edureka
What is Agile Testing? Edureka
Edureka!
 
QA in Agile
QA in AgileQA in Agile
QA in Agile
Mikalai Alimenkou
 
A Concise QA Process
A Concise QA Process A Concise QA Process
A Concise QA Process
Arslan Ali
 
How to develop a project or application
How to develop a project or applicationHow to develop a project or application
How to develop a project or application
Time Tutors
 

What's hot (19)

Continuous business goal validation
Continuous business goal validationContinuous business goal validation
Continuous business goal validation
 
Getting to Continuous Deployment (Webinar Slides)
Getting to Continuous Deployment (Webinar Slides)Getting to Continuous Deployment (Webinar Slides)
Getting to Continuous Deployment (Webinar Slides)
 
Agile Testing Process
Agile Testing ProcessAgile Testing Process
Agile Testing Process
 
Product delivery Pawel Dyrek
Product delivery Pawel DyrekProduct delivery Pawel Dyrek
Product delivery Pawel Dyrek
 
How testers add value to the organization appium conf
How testers add value to the organization  appium confHow testers add value to the organization  appium conf
How testers add value to the organization appium conf
 
Way to Agile - USTH
Way to Agile - USTHWay to Agile - USTH
Way to Agile - USTH
 
The New Agile Testing Quadrants: Bringing Skilled Testers and Developers Toge...
The New Agile Testing Quadrants: Bringing Skilled Testers and Developers Toge...The New Agile Testing Quadrants: Bringing Skilled Testers and Developers Toge...
The New Agile Testing Quadrants: Bringing Skilled Testers and Developers Toge...
 
HPE | Network Virtualization | POC
HPE | Network Virtualization | POCHPE | Network Virtualization | POC
HPE | Network Virtualization | POC
 
How to overcome agile methodology challenges
How to overcome agile methodology challengesHow to overcome agile methodology challenges
How to overcome agile methodology challenges
 
Shift left as first transformation step into Quality Assurance
Shift left as first transformation step into Quality AssuranceShift left as first transformation step into Quality Assurance
Shift left as first transformation step into Quality Assurance
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Agile QA process
Agile QA processAgile QA process
Agile QA process
 
Optimizing Your Agile Testing Processes
Optimizing Your Agile Testing ProcessesOptimizing Your Agile Testing Processes
Optimizing Your Agile Testing Processes
 
Role Of Qa And Testing In Agile 1225221397167302 8
Role Of Qa And Testing In Agile 1225221397167302 8Role Of Qa And Testing In Agile 1225221397167302 8
Role Of Qa And Testing In Agile 1225221397167302 8
 
Software testing enhance quality and performance of software
Software testing enhance quality and performance of softwareSoftware testing enhance quality and performance of software
Software testing enhance quality and performance of software
 
What is Agile Testing? Edureka
What is Agile Testing? EdurekaWhat is Agile Testing? Edureka
What is Agile Testing? Edureka
 
QA in Agile
QA in AgileQA in Agile
QA in Agile
 
A Concise QA Process
A Concise QA Process A Concise QA Process
A Concise QA Process
 
How to develop a project or application
How to develop a project or applicationHow to develop a project or application
How to develop a project or application
 

Viewers also liked

Få bedre bankfinansiering - BDO Morgenkaffe 21.01.2015
Få bedre bankfinansiering - BDO Morgenkaffe 21.01.2015Få bedre bankfinansiering - BDO Morgenkaffe 21.01.2015
Få bedre bankfinansiering - BDO Morgenkaffe 21.01.2015Sigbjørn Selvik
 
Civil Engineer Resume
 Civil Engineer Resume Civil Engineer Resume
Civil Engineer Resume
Ravi Kumar
 
#Enrico picciotto novela imperio
#Enrico picciotto   novela imperio#Enrico picciotto   novela imperio
#Enrico picciotto novela imperio
Pietra Picciotto
 
Verificador catastral
Verificador catastralVerificador catastral
Verificador catastral
RICARDO FIGUEROA
 
Onlinedesigersareesshopping
OnlinedesigersareesshoppingOnlinedesigersareesshopping
OnlinedesigersareesshoppingShri Prajapati
 
#Enrico picciotto novela imperio
#Enrico picciotto   novela imperio#Enrico picciotto   novela imperio
#Enrico picciotto novela imperio
Pietra Picciotto
 
Economic Growth Strategies
Economic Growth StrategiesEconomic Growth Strategies
Economic Growth StrategiesAmanda Rodriguez
 
What is Advance Java J2EE
What is Advance Java J2EEWhat is Advance Java J2EE
What is Advance Java J2EE
javaease
 
Qcl 14-v3 [cause-effect diagram ]-[banasthali university]_[dhanishtha paliwal]
Qcl 14-v3 [cause-effect diagram ]-[banasthali university]_[dhanishtha paliwal]Qcl 14-v3 [cause-effect diagram ]-[banasthali university]_[dhanishtha paliwal]
Qcl 14-v3 [cause-effect diagram ]-[banasthali university]_[dhanishtha paliwal]
Dhpali20171994
 
Урок математики 2 класс
Урок математики 2 классУрок математики 2 класс
Урок математики 2 класс
elenanazarovi4
 
Green environment power point template
Green environment power point templateGreen environment power point template
Green environment power point template
dharmendrajangir65
 
Ashish Goel Resume
Ashish Goel ResumeAshish Goel Resume
Ashish Goel ResumeAshish Goel
 

Viewers also liked (13)

Få bedre bankfinansiering - BDO Morgenkaffe 21.01.2015
Få bedre bankfinansiering - BDO Morgenkaffe 21.01.2015Få bedre bankfinansiering - BDO Morgenkaffe 21.01.2015
Få bedre bankfinansiering - BDO Morgenkaffe 21.01.2015
 
Civil Engineer Resume
 Civil Engineer Resume Civil Engineer Resume
Civil Engineer Resume
 
#Enrico picciotto novela imperio
#Enrico picciotto   novela imperio#Enrico picciotto   novela imperio
#Enrico picciotto novela imperio
 
Verificador catastral
Verificador catastralVerificador catastral
Verificador catastral
 
Onlinedesigersareesshopping
OnlinedesigersareesshoppingOnlinedesigersareesshopping
Onlinedesigersareesshopping
 
#Enrico picciotto novela imperio
#Enrico picciotto   novela imperio#Enrico picciotto   novela imperio
#Enrico picciotto novela imperio
 
Economic Growth Strategies
Economic Growth StrategiesEconomic Growth Strategies
Economic Growth Strategies
 
What is Advance Java J2EE
What is Advance Java J2EEWhat is Advance Java J2EE
What is Advance Java J2EE
 
Qcl 14-v3 [cause-effect diagram ]-[banasthali university]_[dhanishtha paliwal]
Qcl 14-v3 [cause-effect diagram ]-[banasthali university]_[dhanishtha paliwal]Qcl 14-v3 [cause-effect diagram ]-[banasthali university]_[dhanishtha paliwal]
Qcl 14-v3 [cause-effect diagram ]-[banasthali university]_[dhanishtha paliwal]
 
Урок математики 2 класс
Урок математики 2 классУрок математики 2 класс
Урок математики 2 класс
 
Green environment power point template
Green environment power point templateGreen environment power point template
Green environment power point template
 
Ashish Goel Resume
Ashish Goel ResumeAshish Goel Resume
Ashish Goel Resume
 
Rebecca Benson Resume
Rebecca Benson ResumeRebecca Benson Resume
Rebecca Benson Resume
 

Similar to Continues Integration for Android

Principles and Practices in Continuous Deployment at Etsy
Principles and Practices in Continuous Deployment at EtsyPrinciples and Practices in Continuous Deployment at Etsy
Principles and Practices in Continuous Deployment at Etsy
Mike Brittain
 
"How to deploy to production 10 times a day" Андрей Шумада
"How to deploy to production 10 times a day" Андрей Шумада"How to deploy to production 10 times a day" Андрей Шумада
"How to deploy to production 10 times a day" Андрей Шумада
Fwdays
 
How to deploy to production 10 times a day
How to deploy to production 10 times a dayHow to deploy to production 10 times a day
How to deploy to production 10 times a day
Andrii Shumada
 
#DOAW16 - DevOps@work Roma 2016 - Testing your databases
#DOAW16 - DevOps@work Roma 2016 - Testing your databases#DOAW16 - DevOps@work Roma 2016 - Testing your databases
#DOAW16 - DevOps@work Roma 2016 - Testing your databases
Alessandro Alpi
 
Enforcing Quality with DevOps Pipeline Gates
Enforcing Quality with DevOps Pipeline GatesEnforcing Quality with DevOps Pipeline Gates
Enforcing Quality with DevOps Pipeline Gates
Michael King
 
Enterprise DevOps: Scaling Build, Deploy, Test, Release
Enterprise DevOps: Scaling Build, Deploy, Test, ReleaseEnterprise DevOps: Scaling Build, Deploy, Test, Release
Enterprise DevOps: Scaling Build, Deploy, Test, Release
IBM UrbanCode Products
 
DevOps - Boldly Go for Distro
DevOps - Boldly Go for DistroDevOps - Boldly Go for Distro
DevOps - Boldly Go for Distro
Paul Boos
 
Growing Object Oriented Software
Growing Object Oriented SoftwareGrowing Object Oriented Software
Growing Object Oriented SoftwareAnnmarie Lanesey
 
Part 2 improving your software development v1.0
Part 2   improving your software development v1.0Part 2   improving your software development v1.0
Part 2 improving your software development v1.0
Jasmine Conseil
 
Distributed Development
Distributed DevelopmentDistributed Development
Distributed Development
Dmitri Nesteruk
 
Continuous Everything
Continuous EverythingContinuous Everything
Continuous Everything
Andrea Tino
 
Continuous Integration: A Case Study
Continuous Integration: A Case StudyContinuous Integration: A Case Study
Continuous Integration: A Case Study
IndicThreads
 
Successful Software Projects - What you need to consider
Successful Software Projects - What you need to considerSuccessful Software Projects - What you need to consider
Successful Software Projects - What you need to consider
LloydMoore
 
DevOps and Build Automation
DevOps and Build AutomationDevOps and Build Automation
DevOps and Build Automation
Heiswayi Nrird
 
Presentation 1 open source tools in continuous integration environment v1.0
Presentation 1   open source tools in continuous integration environment v1.0Presentation 1   open source tools in continuous integration environment v1.0
Presentation 1 open source tools in continuous integration environment v1.0
Jasmine Conseil
 
Continous integration and delivery for single page applications
Continous integration and delivery for single page applicationsContinous integration and delivery for single page applications
Continous integration and delivery for single page applications
Sunil Dalal
 
Lets talk about CI CD Pipeline in Agile
Lets talk about CI CD Pipeline in Agile Lets talk about CI CD Pipeline in Agile
Lets talk about CI CD Pipeline in Agile
Poonam Panday
 
Continuous Integrations & Deployments
Continuous Integrations & DeploymentsContinuous Integrations & Deployments
Continuous Integrations & Deployments
Shinu Suresh
 
AAA Automated Testing
AAA Automated TestingAAA Automated Testing
AAA Automated Testing
Francesco Carucci
 
Cloud continuous integration- A distributed approach using distinct services
Cloud continuous integration- A distributed approach using distinct servicesCloud continuous integration- A distributed approach using distinct services
Cloud continuous integration- A distributed approach using distinct services
André Agostinho
 

Similar to Continues Integration for Android (20)

Principles and Practices in Continuous Deployment at Etsy
Principles and Practices in Continuous Deployment at EtsyPrinciples and Practices in Continuous Deployment at Etsy
Principles and Practices in Continuous Deployment at Etsy
 
"How to deploy to production 10 times a day" Андрей Шумада
"How to deploy to production 10 times a day" Андрей Шумада"How to deploy to production 10 times a day" Андрей Шумада
"How to deploy to production 10 times a day" Андрей Шумада
 
How to deploy to production 10 times a day
How to deploy to production 10 times a dayHow to deploy to production 10 times a day
How to deploy to production 10 times a day
 
#DOAW16 - DevOps@work Roma 2016 - Testing your databases
#DOAW16 - DevOps@work Roma 2016 - Testing your databases#DOAW16 - DevOps@work Roma 2016 - Testing your databases
#DOAW16 - DevOps@work Roma 2016 - Testing your databases
 
Enforcing Quality with DevOps Pipeline Gates
Enforcing Quality with DevOps Pipeline GatesEnforcing Quality with DevOps Pipeline Gates
Enforcing Quality with DevOps Pipeline Gates
 
Enterprise DevOps: Scaling Build, Deploy, Test, Release
Enterprise DevOps: Scaling Build, Deploy, Test, ReleaseEnterprise DevOps: Scaling Build, Deploy, Test, Release
Enterprise DevOps: Scaling Build, Deploy, Test, Release
 
DevOps - Boldly Go for Distro
DevOps - Boldly Go for DistroDevOps - Boldly Go for Distro
DevOps - Boldly Go for Distro
 
Growing Object Oriented Software
Growing Object Oriented SoftwareGrowing Object Oriented Software
Growing Object Oriented Software
 
Part 2 improving your software development v1.0
Part 2   improving your software development v1.0Part 2   improving your software development v1.0
Part 2 improving your software development v1.0
 
Distributed Development
Distributed DevelopmentDistributed Development
Distributed Development
 
Continuous Everything
Continuous EverythingContinuous Everything
Continuous Everything
 
Continuous Integration: A Case Study
Continuous Integration: A Case StudyContinuous Integration: A Case Study
Continuous Integration: A Case Study
 
Successful Software Projects - What you need to consider
Successful Software Projects - What you need to considerSuccessful Software Projects - What you need to consider
Successful Software Projects - What you need to consider
 
DevOps and Build Automation
DevOps and Build AutomationDevOps and Build Automation
DevOps and Build Automation
 
Presentation 1 open source tools in continuous integration environment v1.0
Presentation 1   open source tools in continuous integration environment v1.0Presentation 1   open source tools in continuous integration environment v1.0
Presentation 1 open source tools in continuous integration environment v1.0
 
Continous integration and delivery for single page applications
Continous integration and delivery for single page applicationsContinous integration and delivery for single page applications
Continous integration and delivery for single page applications
 
Lets talk about CI CD Pipeline in Agile
Lets talk about CI CD Pipeline in Agile Lets talk about CI CD Pipeline in Agile
Lets talk about CI CD Pipeline in Agile
 
Continuous Integrations & Deployments
Continuous Integrations & DeploymentsContinuous Integrations & Deployments
Continuous Integrations & Deployments
 
AAA Automated Testing
AAA Automated TestingAAA Automated Testing
AAA Automated Testing
 
Cloud continuous integration- A distributed approach using distinct services
Cloud continuous integration- A distributed approach using distinct servicesCloud continuous integration- A distributed approach using distinct services
Cloud continuous integration- A distributed approach using distinct services
 

Continues Integration for Android

  • 2. Is it worth it? What's inside - unboxing Who (and how) is pulling the strings What can we automate Summary Agenda
  • 3. Is it worth it? What's inside - unboxing Who (and how) is pulling the strings What can we automate Summary Agenda
  • 5. Time is saved and responsibilities are delegated - less management and oversight, more regularity Signing credentials safety On-a-plate project's health statistics Immediate information sharing among team's members - success/failure, health Benefits
  • 7. Initial setup overhead A server is needed Drawbacks
  • 8. Is it worth it? What's inside - unboxing Who (and how) is pulling the strings What can we automate Summary Agenda
  • 11. Setup
  • 13. Is it worth it? What's inside - unboxing Who (and how) is pulling the strings What can we automate Summary Agenda
  • 15. Well known (has many plugins and good support) For each project there is one or more jobs A job's execution is called a build So called build steps allow to chain multiple actions A finished build can trigger another job Each job starts a new emulator instance Jenkins - key facts
  • 17. Currently recommended build tool for Android Highly flexible, very powerful Transparent configuration format Unified building process across machines Dependencies resolved efficiently Executes so called tasks, e.g. 'assemble', 'test', 'connectedCheck' Gradle - key facts
  • 18. Is it worth it? What's inside - unboxing Who (and how) is pulling the strings What can we automate Summary Agenda
  • 20. Well known (has many plugins and good support) For each project there is one or more jobs A job's execution is called a build So called build steps allow to chain multiple actions A finished build can trigger another job Each job starts a new emulator instance Secure signing Requirements: each public build should be signed signing keys for release builds should be kept safe Secure signing Solution: keep release keys only on the CI server configure Gradle to use release keys if available (server case) otherwise make it use debug keys (dev's computer case)
  • 22. Tests' types: unit tests UI tests on an emulator Testing Automation gains: verify codebase frequently to discover new bugs rapidly run all tests periodically to ensure full regression compliance
  • 24. Prevents bugs introduction Improves future development's speed Encourages good practices Automatic inspections save developers' time High-quality code makes developers happy Code quality analysis
  • 26. Push messages to a Slack channel of choice Post a job status change E-mail notifications are also available but… people tend to ignore those (or mark them as spam) Team notification
  • 28. Easy APK sharing via Crashlytics (e.g. for QA teams) Dedicated jobs use only special commits (e.g. with a release tag) Distribution
  • 29. Is it worth it? What's inside - unboxing Who (and how) is pulling the strings What can we automate Summary Agenda
  • 30. Setup
  • 33. Fetches the code Starts an emulator Starts code analysis (Sonar Runner) Invokes Gradle (!) Collects and publishes artifacts and results - APKs - reports: lint, tests Pushes notifications to Slack Jenkins - responsibilities
  • 35. Builds the app (APK) Signs the app Performs Android-specific analysis (lint) Performs unit tests Performs UI tests Gradle - responsibilities
  • 37. Other frameworks for UI tests - Espresso, Android Testing Support Library Other tools for continuous integration - Team City Direct APKs' upload to Google Play Running tests on multiple emulators Customized Slack notifications What's next?
  • 38. Thank you for your attention