SlideShare a Scribd company logo
Survival of the Continuist
Paul Blundell & Xavi Rigau
Agenda
1. What we do @novoda
2. A few gotcha’s
3. Q&A
Agenda
1. What we do @novoda
2. A few gotcha’s
3. Q&A
4. Find info on google/ask us on social network
5. ???
6. PROFIT!!!
In the beginning
There was nothing.
Different CI Software
Jenkins
Confidence when code changes
Connecting Emulators
HAXM
Connecting Devices
There is no I in CI team
Github Oauth sign in
● Makes it easy to sign into the CI
● One less password to remember
● Bonus if you use two factor authentication
● Downside: DDoS
Unit Testing
● Proves your code works
● Fast to run
● Helps others to understand your code
● Proves others don’t break your code
● Can be used for statistical analysis
Acceptance Testing
● Instrumented, Connected Testing (cAT)
● Testing real scenarios through connected devices
(real or emulated)
● Slow to run / to reproduce
● CI scripting can speed up debugging test cases
Fuzz || Smoke WebService Testing
● Help your server side team and mobile team work together
● Can point out crazy bugs you’d only see in the wild
● Slow to run
● Limited benefit if you’re committing non-related code
Sanity checking is boring
UI/Application Exerciser Monkey
● Send a number of random touch & key events to the app
● Helps you catch weird bugs that only a monkey can
reproduce
● Use the seed to reproduce the same scenario
● Use with a minimum of 50k events to get useful feedback
● Let it run nightly on the CI and keep the logcat on a crash
● New Google Play feature (chimpanzee)
It works on my machine
Wall Display
● Gives visibility of the status of all projects
● Having a face on a broken build pushes them to fix it
● Filter out non-important jobs
● It’s colour blind friendly
Our app is tablet only
ADB power user
● Android command plugin lets you filter devices to run on
● You can filter on device props
(brand, model, os version, is emulator, etc.)
● Send input events
(automatic app sign in, etc.)
● Install, uninstall, clear prefs, run monkey
Speed is relative
Nightly Builds
● Use nightly jobs to do long running testing
● You can run monkey tests, smoke tests, etc.
● Build and publish the app to alpha groups automatically
Feature shipping
Automatic releases to Google Play
● Easily automatable with gradle plugin
● Or DIY using the API directly
● Automate releases to alpha, beta or live
I want to integrate with the team
Pull request builder
● Builds code and runs tests on a different branch before it
makes it into master.
● Perform actions when the PRB finishes (such as closing the
PR if the build fails).
● Customize the comment.
CI game
● Gives points for adding tests and fixing static analysis issues
● Minus points for breaking the build, adding issues
● Engages the team and makes them care a bit more about
fixing those issues
Code quality matters
Use results & analysis graphing on the CI
● You can publish the results of Findbugs, PMD, Lint,
Checkstyle and tests on every build
● Evolution of the results over time
Who put that there?!
Team chat notifications
● Communicate with your team!
● Use chat integration with Jenkins
● You can choose what events you want to send (build
started, finished, failed, back to success, etc.)
Jenkins notifications
● Complement (or replace) chat notifications with email
● Choose what events you want to send emails for
● Use tags for email lists to have easy filtering (e.
g. devs+merlin@novoda.com)
Want to build faster
CI nodes and executors
● More nodes means you can have more executors
● You can also create specific environments on each node
(only tablets plugged in, only Amazon phones, etc)
● Remote nodes are flaky
● Some setup involved
(install SDKs, add SSH keys, etc)
Parameterised builds
● Gives jobs more flexibility
● Multiple types
(checkbox - boolean, raw text, etc.)
Not everything can be public
Matrix-based Security Plugin
● Control who can see what job
● Fine control of what actions users can perform in a job
(read only, read-write, read but can build, etc.)
● Useful when devs, QA and external people have to use the
same job.
Public facing CI
● Treat open source just like a real project
● Allow contributors to see the state of your build
● Visivle static analysis & test results over time
Watch out for...
Log rotation & deleting old builds
● Keep the CI box building fast
● Plugins generate tons of error messages
● Jenkins Jobs * Plugins = tons of logs using disk space.
JDK6 vs JDK7 builds
● Use the right JDK for your project setup.
● Manually add new JDKs if needed
● We haven’t found a way to force a specific JDK to use when
you create a new job.
Updating build tools/sdks
● Has to be done on all nodes
● Can be done with --no-ui option but it’s a bit tedious
● Maybe can be simplified by using JW’s plugin
● Can be automated as a job in Jenkins #jenkinsception
Configuration Matrix
● Build the project on the list of nodes you want
● Can be parallel or sequentially
Updating Jenkins & plugins
● Necessary but scary
● Sometimes plugins aren’t stable enough
● Make sure to test after updating and revert to previous
version if something is wrong
Organise your jobs
● Use views to remove noise from the Jenkins dashboard
● Use specific names to filter or regex
● You can reuse the views for the wall display
Apex Predator
WHAT WE WANT (future)
Xavi Rigau / Paul Blundell
@xrigau / @blundell_apps
google.com/+XaviRigau / google.com/+PaulBlundell
xrigau / blundell
Android Software Craftsmen

More Related Content

PDF
Automating The New York Times Crossword by Phil Wells
PPT
icebreakerwithdevops-150218112943-conversion-gate02
PDF
Continuous integration & Continuous Delivery @DeVz
PDF
Magento Continuous Integration & Continuous Delivery @MM17HR
PDF
Page Objects - You're Doing it Wrong by Titus Fortner
PDF
Extreme Programming - to the next-level
PDF
Why You Should Start Using Docker
PDF
Fast end-to-end-tests
Automating The New York Times Crossword by Phil Wells
icebreakerwithdevops-150218112943-conversion-gate02
Continuous integration & Continuous Delivery @DeVz
Magento Continuous Integration & Continuous Delivery @MM17HR
Page Objects - You're Doing it Wrong by Titus Fortner
Extreme Programming - to the next-level
Why You Should Start Using Docker
Fast end-to-end-tests

What's hot (20)

PDF
Introduction to Automated Testing
PPTX
TDD with Python and App Engine
PDF
WSO2Con Asia 2014 - Agile DevOps in the Cloud
PDF
Putting the pro in programmer
PDF
Automated Performance Testing
PDF
Break Up the Monolith- Testing Microservices by Marcus Merrell
PDF
Droid con 2013 workshop unit testing in android [robolectirc]
PDF
Put "fast" back in "fast feedback"
PPTX
A brief history of automation in Software Engineering
PPT
Continuous Integration
ODP
OpenNTF Essentials
ODP
Product development and tools
PPT
Игорь Бондаренко (Neklo) - Организация процесса разработки модулей для Magento
PPTX
Supermondays: Jenkins CI lightning talk
PDF
How to Upgrade to the Newest Shiniest Django Version
PPTX
Continuous Integration and Continuous Deployment in Enterprise scenario
PPTX
Intro to Continuous Integration
PDF
Continuous integration with docker, buildbot and git
PDF
Releaseflow: a healthy build and deploy process
PDF
Критика "библиотечного" подхода в разработке под Android. UA Mobile 2016.
Introduction to Automated Testing
TDD with Python and App Engine
WSO2Con Asia 2014 - Agile DevOps in the Cloud
Putting the pro in programmer
Automated Performance Testing
Break Up the Monolith- Testing Microservices by Marcus Merrell
Droid con 2013 workshop unit testing in android [robolectirc]
Put "fast" back in "fast feedback"
A brief history of automation in Software Engineering
Continuous Integration
OpenNTF Essentials
Product development and tools
Игорь Бондаренко (Neklo) - Организация процесса разработки модулей для Magento
Supermondays: Jenkins CI lightning talk
How to Upgrade to the Newest Shiniest Django Version
Continuous Integration and Continuous Deployment in Enterprise scenario
Intro to Continuous Integration
Continuous integration with docker, buildbot and git
Releaseflow: a healthy build and deploy process
Критика "библиотечного" подхода в разработке под Android. UA Mobile 2016.
Ad

Viewers also liked (20)

PPTX
Open house2
PPTX
Rumus kima & persamaan kimia
PDF
Panduan microsoft word_20071
PPTX
Y U NO CRAFTSMAN
PPTX
Rumus kima & persamaan kimia
PPTX
Rumus kima & persamaan kimia
PPTX
Kesetimbangan kimia
PPTX
Judge my gym - GymBabes Walkthrough
PPT
Entrepreneurship from a regional market perspective
PPT
Justice ,justice shall you pursue
PPT
Roditelskoe sobranie 11klassy
PPT
Phoenix presentation
PPTX
สอบปฏิบัติ
PPTX
школа – дом, в котором наше детство
DOC
Fundamentals of relationship marketing a relationship-perspective_chapter1 se...
PDF
A paixão de nosso senhor jesus cristo v. ii
PDF
Oh so you test? - A guide to testing on Android from Unit to Mutation
PPTX
Open Closed Principle kata
PPTX
An easy way to automate complex UI
PDF
Frases de são Pio de Pietrelcina
Open house2
Rumus kima & persamaan kimia
Panduan microsoft word_20071
Y U NO CRAFTSMAN
Rumus kima & persamaan kimia
Rumus kima & persamaan kimia
Kesetimbangan kimia
Judge my gym - GymBabes Walkthrough
Entrepreneurship from a regional market perspective
Justice ,justice shall you pursue
Roditelskoe sobranie 11klassy
Phoenix presentation
สอบปฏิบัติ
школа – дом, в котором наше детство
Fundamentals of relationship marketing a relationship-perspective_chapter1 se...
A paixão de nosso senhor jesus cristo v. ii
Oh so you test? - A guide to testing on Android from Unit to Mutation
Open Closed Principle kata
An easy way to automate complex UI
Frases de são Pio de Pietrelcina
Ad

Similar to Survival of the Continuist (20)

PDF
Dominik Veselý - Vše co jste kdy chtěli vědět o CI a báli jste se zeptat
PDF
Continuous integration (eng)
PDF
Jenkins - Automating Yourself Out Of A Job (One That You Don't Want)
PDF
Agile Bodensee - Testautomation & Continuous Delivery Workshop
PPTX
Continuous Test Automation via CI (CodeMash 2012) - Automating the Agile way
PPTX
Making software development processes to work for you
PDF
Let’s start Continuous Integration with jenkins
PDF
Continuous Cross Platform Mobile App Development using Jenkins Build Server
PPT
Jenkins Overview
PPTX
Continuous integration ( jen kins travis ci)
PPTX
The Key Components of Adopting CI The OpenStack Way
PDF
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
PDF
[Perforce] Adventures in Build
PDF
Continuous Integration for your Android projects
PPTX
Continuous integration
PPTX
MyHeritage - QA Automations in a Continuous Deployment environment
ZIP
Introduction To Continuous Integration
PPTX
MyHeritage - End 2 End testing Infra
PDF
Continuous Integration на стероидах / Александр Акбашев (HERE)
PDF
Continuous Integration on Steroids
Dominik Veselý - Vše co jste kdy chtěli vědět o CI a báli jste se zeptat
Continuous integration (eng)
Jenkins - Automating Yourself Out Of A Job (One That You Don't Want)
Agile Bodensee - Testautomation & Continuous Delivery Workshop
Continuous Test Automation via CI (CodeMash 2012) - Automating the Agile way
Making software development processes to work for you
Let’s start Continuous Integration with jenkins
Continuous Cross Platform Mobile App Development using Jenkins Build Server
Jenkins Overview
Continuous integration ( jen kins travis ci)
The Key Components of Adopting CI The OpenStack Way
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
[Perforce] Adventures in Build
Continuous Integration for your Android projects
Continuous integration
MyHeritage - QA Automations in a Continuous Deployment environment
Introduction To Continuous Integration
MyHeritage - End 2 End testing Infra
Continuous Integration на стероидах / Александр Акбашев (HERE)
Continuous Integration on Steroids

More from Paul Blundell (12)

PDF
In 10 mins a software crafting journey
PDF
The Novoda Craft University
PPTX
Android Things - Solid Foundations
PPTX
Http Caching for the Android Aficionado
PPTX
My perspective on MVP and architecture discussions
PPTX
Java Patterns - Strategy
PDF
Google I/O 2015 Android & Tech Announcements
PDF
Android Jam - Services & Notifications - Udacity Lesson 6
PDF
Android Jam - Loaders - Udacity Lesson 4c
PDF
Android Jam - ContentProviders - Udacity Lesson 4b
PPTX
Android Jam - Activity Lifecycle & Databases - Udacity Lesson 4a
PPTX
Jenkins project based authorization
In 10 mins a software crafting journey
The Novoda Craft University
Android Things - Solid Foundations
Http Caching for the Android Aficionado
My perspective on MVP and architecture discussions
Java Patterns - Strategy
Google I/O 2015 Android & Tech Announcements
Android Jam - Services & Notifications - Udacity Lesson 6
Android Jam - Loaders - Udacity Lesson 4c
Android Jam - ContentProviders - Udacity Lesson 4b
Android Jam - Activity Lifecycle & Databases - Udacity Lesson 4a
Jenkins project based authorization

Recently uploaded (20)

PPTX
TLE Review Electricity (Electricity).pptx
PPTX
cloud_computing_Infrastucture_as_cloud_p
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Getting Started with Data Integration: FME Form 101
PDF
Accuracy of neural networks in brain wave diagnosis of schizophrenia
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PPTX
Group 1 Presentation -Planning and Decision Making .pptx
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Empathic Computing: Creating Shared Understanding
PPTX
Tartificialntelligence_presentation.pptx
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PPTX
OMC Textile Division Presentation 2021.pptx
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Encapsulation theory and applications.pdf
PPTX
SOPHOS-XG Firewall Administrator PPT.pptx
PDF
Heart disease approach using modified random forest and particle swarm optimi...
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
TLE Review Electricity (Electricity).pptx
cloud_computing_Infrastucture_as_cloud_p
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Getting Started with Data Integration: FME Form 101
Accuracy of neural networks in brain wave diagnosis of schizophrenia
Digital-Transformation-Roadmap-for-Companies.pptx
Per capita expenditure prediction using model stacking based on satellite ima...
Group 1 Presentation -Planning and Decision Making .pptx
Reach Out and Touch Someone: Haptics and Empathic Computing
Encapsulation_ Review paper, used for researhc scholars
Empathic Computing: Creating Shared Understanding
Tartificialntelligence_presentation.pptx
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
OMC Textile Division Presentation 2021.pptx
Network Security Unit 5.pdf for BCA BBA.
Advanced methodologies resolving dimensionality complications for autism neur...
Encapsulation theory and applications.pdf
SOPHOS-XG Firewall Administrator PPT.pptx
Heart disease approach using modified random forest and particle swarm optimi...
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf

Survival of the Continuist

  • 1. Survival of the Continuist Paul Blundell & Xavi Rigau
  • 2. Agenda 1. What we do @novoda 2. A few gotcha’s 3. Q&A
  • 3. Agenda 1. What we do @novoda 2. A few gotcha’s 3. Q&A 4. Find info on google/ask us on social network 5. ??? 6. PROFIT!!!
  • 4. In the beginning There was nothing.
  • 10. There is no I in CI team
  • 11. Github Oauth sign in ● Makes it easy to sign into the CI ● One less password to remember ● Bonus if you use two factor authentication ● Downside: DDoS
  • 12. Unit Testing ● Proves your code works ● Fast to run ● Helps others to understand your code ● Proves others don’t break your code ● Can be used for statistical analysis
  • 13. Acceptance Testing ● Instrumented, Connected Testing (cAT) ● Testing real scenarios through connected devices (real or emulated) ● Slow to run / to reproduce ● CI scripting can speed up debugging test cases
  • 14. Fuzz || Smoke WebService Testing ● Help your server side team and mobile team work together ● Can point out crazy bugs you’d only see in the wild ● Slow to run ● Limited benefit if you’re committing non-related code
  • 16. UI/Application Exerciser Monkey ● Send a number of random touch & key events to the app ● Helps you catch weird bugs that only a monkey can reproduce ● Use the seed to reproduce the same scenario ● Use with a minimum of 50k events to get useful feedback ● Let it run nightly on the CI and keep the logcat on a crash ● New Google Play feature (chimpanzee)
  • 17. It works on my machine
  • 18. Wall Display ● Gives visibility of the status of all projects ● Having a face on a broken build pushes them to fix it ● Filter out non-important jobs ● It’s colour blind friendly
  • 19. Our app is tablet only
  • 20. ADB power user ● Android command plugin lets you filter devices to run on ● You can filter on device props (brand, model, os version, is emulator, etc.) ● Send input events (automatic app sign in, etc.) ● Install, uninstall, clear prefs, run monkey
  • 22. Nightly Builds ● Use nightly jobs to do long running testing ● You can run monkey tests, smoke tests, etc. ● Build and publish the app to alpha groups automatically
  • 24. Automatic releases to Google Play ● Easily automatable with gradle plugin ● Or DIY using the API directly ● Automate releases to alpha, beta or live
  • 25. I want to integrate with the team
  • 26. Pull request builder ● Builds code and runs tests on a different branch before it makes it into master. ● Perform actions when the PRB finishes (such as closing the PR if the build fails). ● Customize the comment.
  • 27. CI game ● Gives points for adding tests and fixing static analysis issues ● Minus points for breaking the build, adding issues ● Engages the team and makes them care a bit more about fixing those issues
  • 29. Use results & analysis graphing on the CI ● You can publish the results of Findbugs, PMD, Lint, Checkstyle and tests on every build ● Evolution of the results over time
  • 30. Who put that there?!
  • 31. Team chat notifications ● Communicate with your team! ● Use chat integration with Jenkins ● You can choose what events you want to send (build started, finished, failed, back to success, etc.)
  • 32. Jenkins notifications ● Complement (or replace) chat notifications with email ● Choose what events you want to send emails for ● Use tags for email lists to have easy filtering (e. g. [email protected])
  • 33. Want to build faster
  • 34. CI nodes and executors ● More nodes means you can have more executors ● You can also create specific environments on each node (only tablets plugged in, only Amazon phones, etc) ● Remote nodes are flaky ● Some setup involved (install SDKs, add SSH keys, etc)
  • 35. Parameterised builds ● Gives jobs more flexibility ● Multiple types (checkbox - boolean, raw text, etc.)
  • 36. Not everything can be public
  • 37. Matrix-based Security Plugin ● Control who can see what job ● Fine control of what actions users can perform in a job (read only, read-write, read but can build, etc.) ● Useful when devs, QA and external people have to use the same job.
  • 38. Public facing CI ● Treat open source just like a real project ● Allow contributors to see the state of your build ● Visivle static analysis & test results over time
  • 40. Log rotation & deleting old builds ● Keep the CI box building fast ● Plugins generate tons of error messages ● Jenkins Jobs * Plugins = tons of logs using disk space.
  • 41. JDK6 vs JDK7 builds ● Use the right JDK for your project setup. ● Manually add new JDKs if needed ● We haven’t found a way to force a specific JDK to use when you create a new job.
  • 42. Updating build tools/sdks ● Has to be done on all nodes ● Can be done with --no-ui option but it’s a bit tedious ● Maybe can be simplified by using JW’s plugin ● Can be automated as a job in Jenkins #jenkinsception
  • 43. Configuration Matrix ● Build the project on the list of nodes you want ● Can be parallel or sequentially
  • 44. Updating Jenkins & plugins ● Necessary but scary ● Sometimes plugins aren’t stable enough ● Make sure to test after updating and revert to previous version if something is wrong
  • 45. Organise your jobs ● Use views to remove noise from the Jenkins dashboard ● Use specific names to filter or regex ● You can reuse the views for the wall display
  • 47. WHAT WE WANT (future)
  • 48. Xavi Rigau / Paul Blundell @xrigau / @blundell_apps google.com/+XaviRigau / google.com/+PaulBlundell xrigau / blundell Android Software Craftsmen