SlideShare une entreprise Scribd logo
1  sur  48
Télécharger pour lire hors ligne
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

Contenu connexe

Tendances

WSO2Con Asia 2014 - Agile DevOps in the Cloud
WSO2Con Asia 2014 - Agile DevOps in the CloudWSO2Con Asia 2014 - Agile DevOps in the Cloud
WSO2Con Asia 2014 - Agile DevOps in the Cloud
WSO2
 
Product development and tools
Product development and toolsProduct development and tools
Product development and tools
roelofr
 
Игорь Бондаренко (Neklo) - Организация процесса разработки модулей для Magento
Игорь Бондаренко (Neklo) - Организация процесса разработки модулей для MagentoИгорь Бондаренко (Neklo) - Организация процесса разработки модулей для Magento
Игорь Бондаренко (Neklo) - Организация процесса разработки модулей для Magento
meet_magento
 
Continuous integration with docker, buildbot and git
Continuous integration with docker, buildbot and gitContinuous integration with docker, buildbot and git
Continuous integration with docker, buildbot and git
Adieu
 

Tendances (20)

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

En vedette

Rumus kima & persamaan kimia
Rumus kima & persamaan kimiaRumus kima & persamaan kimia
Rumus kima & persamaan kimia
widhiyani
 
Panduan microsoft word_20071
Panduan microsoft word_20071Panduan microsoft word_20071
Panduan microsoft word_20071
Amri Abdillah
 
Rumus kima & persamaan kimia
Rumus kima & persamaan kimiaRumus kima & persamaan kimia
Rumus kima & persamaan kimia
widhiyani
 
Rumus kima & persamaan kimia
Rumus kima & persamaan kimiaRumus kima & persamaan kimia
Rumus kima & persamaan kimia
widhiyani
 
Roditelskoe sobranie 11klassy
Roditelskoe sobranie 11klassyRoditelskoe sobranie 11klassy
Roditelskoe sobranie 11klassy
lili4ka54
 
школа – дом, в котором наше детство
школа – дом, в котором наше детствошкола – дом, в котором наше детство
школа – дом, в котором наше детство
lili4ka54
 
Fundamentals of relationship marketing a relationship-perspective_chapter1 se...
Fundamentals of relationship marketing a relationship-perspective_chapter1 se...Fundamentals of relationship marketing a relationship-perspective_chapter1 se...
Fundamentals of relationship marketing a relationship-perspective_chapter1 se...
Divya Kansha
 

En vedette (20)

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

Similaire à Survival of the Continuist

RandomTest - Random Software Integration Tests That Just Work for C/C++, Java...
RandomTest - Random Software Integration Tests That Just Work for C/C++, Java...RandomTest - Random Software Integration Tests That Just Work for C/C++, Java...
RandomTest - Random Software Integration Tests That Just Work for C/C++, Java...
dcieslak
 
Continuous Delivery: 5 years later (Incontro DevOps 2018)
Continuous Delivery: 5 years later (Incontro DevOps 2018)Continuous Delivery: 5 years later (Incontro DevOps 2018)
Continuous Delivery: 5 years later (Incontro DevOps 2018)
Giovanni Toraldo
 

Similaire à Survival of the Continuist (20)

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

Plus de Paul Blundell

Plus de Paul Blundell (12)

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

Dernier

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Dernier (20)

Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 

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