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
High Performance Software Engineering Teams
PDF
Continuous integration (eng)
PDF
Expedia 3x3 presentation
ODP
Jenkins 101: Continuos Integration with Jenkins
PDF
Writing Tests with the Unity Test Framework
PDF
“Practical DevOps by a small team of devs” by Ilgvars Jēcis from FinoTech  at...
PDF
Netflix Open Source: Building a Distributed and Automated Open Source Program
PDF
Building a Distributed & Automated Open Source Program at Netflix
ODP
RandomTest - Random Software Integration Tests That Just Work for C/C++, Java...
PPTX
Creating a reasonable project boilerplate
PPTX
What is dev ops?
PDF
Introduction to Continuous Integration
PDF
Tooling Matters - Development tools
PDF
Software Delivery in 2016 - A Continuous Delivery Approach
PDF
Continuous Delivery: 5 years later (Incontro DevOps 2018)
PDF
GTAC 2015
PDF
Test driven development_continuous_integration
PDF
GitOps , done Right
PDF
Test driven development - Zombie proof your code
PPTX
Continuous Deployment
High Performance Software Engineering Teams
Continuous integration (eng)
Expedia 3x3 presentation
Jenkins 101: Continuos Integration with Jenkins
Writing Tests with the Unity Test Framework
“Practical DevOps by a small team of devs” by Ilgvars Jēcis from FinoTech  at...
Netflix Open Source: Building a Distributed and Automated Open Source Program
Building a Distributed & Automated Open Source Program at Netflix
RandomTest - Random Software Integration Tests That Just Work for C/C++, Java...
Creating a reasonable project boilerplate
What is dev ops?
Introduction to Continuous Integration
Tooling Matters - Development tools
Software Delivery in 2016 - A Continuous Delivery Approach
Continuous Delivery: 5 years later (Incontro DevOps 2018)
GTAC 2015
Test driven development_continuous_integration
GitOps , done Right
Test driven development - Zombie proof your code
Continuous Deployment

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
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
cuic standard and advanced reporting.pdf
PPTX
MYSQL Presentation for SQL database connectivity
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PPTX
Big Data Technologies - Introduction.pptx
PPTX
A Presentation on Artificial Intelligence
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Digital-Transformation-Roadmap-for-Companies.pptx
cuic standard and advanced reporting.pdf
MYSQL Presentation for SQL database connectivity
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Agricultural_Statistics_at_a_Glance_2022_0.pdf
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
NewMind AI Weekly Chronicles - August'25 Week I
Chapter 3 Spatial Domain Image Processing.pdf
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Review of recent advances in non-invasive hemoglobin estimation
Per capita expenditure prediction using model stacking based on satellite ima...
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
Mobile App Security Testing_ A Comprehensive Guide.pdf
Unlocking AI with Model Context Protocol (MCP)
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
Big Data Technologies - Introduction.pptx
A Presentation on Artificial Intelligence
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy

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. devs+merlin@novoda.com)
  • 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