SlideShare a Scribd company logo
Continuous Integration
on Steroids
Akbashev Alexander
Highload++ | November 07, 2016
Continuous Integration on Steroids
Agenda
01. CI in HERE
02. Monitoring
03. Scalability
04. Jenkins
05. Nightmares Plugins
06. Morale
07. Q&A
01
Continuous Integration in
HERE
Every change goes through validation pipeline
Gerrit
Gerrit
Plugin
Pre-submit
Trigger
Pre-submit
Trigger
Build
Build
Build
Build
Build
Tests
Tests
Tests
Tests
Tests
Tests
Tests
Tests
Tests
Tests
Tests
Tests
Tests
Feedback goes from tests back to Gerrit
Gerrit
Gerrit
Plugin
Pre-submit
Trigger
Pre-submit
Trigger
Build
Build
Build
Build
Build
Tests
Tests
Tests
Tests
Tests
Tests
Tests
Tests
Tests
Tests
Tests
Tests
Tests
Feedback comes from every pipeline
Gerrit
Gerrit
Plugin
Pre-submit
Trigger
Pre-submit
Trigger
Build
Build
Build
Build
Build
Tests
Tests
Tests
Tests
Tests
Tests
Tests
Tests
Tests
Tests
Tests
Tests
Tests
Numbers
100k+ builds per day ~1.5k concurrent builds 1.3-2.5k executors
• Each “build” is
execution of one build/
test job
• Total number correlates
with number of commits
• Number of builds is not
so important as number
of commits
• Big throughput is
extremely important
• Morning commit
• Before lunch
• “Last attempt for today”
• Raised on-demand
• Health checks
• Jenkins strategy is not
optimized for cloud
02
Monitoring
Collects information about every build in system
Groovy
Event
Listener
Plugin
Jenkins
build
Fluentd InfluxDB Grafana
Collects information about every build in system
Groovy
Event
Listener
Plugin
Jenkins
build Fluentd InfluxDB Grafana
JVM stats are the best “canary”
Groovy
Event
Listener
Plugin
Jenkins
build
Fluentd InfluxDB Grafana
Jenkins
JVM
Continuous Integration on Steroids
03
Scalability
What do we want to achieve?
What do we want to achieve?
Keep feedback time (< 20 min.)
What do we want to achieve?
Keep feedback time (< 20 min.)
Test as much as possible
What do we want to achieve?
Keep feedback time (< 20 min.)
Test as much as possible
… with debug symbols
What do we want to achieve?
Keep feedback time (< 20 min.)
Test as much as possible
… with debug symbols
… and code coverage information
What do we want to achieve?
Keep feedback time (< 20 min.)
Test as much as possible
… with debug symbols
… and code coverage information
and on physical devices
How to scale
Increase number of executors
Minimize job execution time
Smart testing
How to increase number of executors?
EC2 Plugin
TestDroid
How to minimize job execution time
How to minimize job execution time
Split tests by type
How to minimize job execution time
Split tests by type
Parallel execution
How to minimize job execution time
Split tests by type
Parallel execution
Node as cache storage
How to minimize job execution time
Split tests by type
Parallel execution
Node as cache storage
Shared compiler cache
How to minimize job execution time
Split tests by type
Parallel execution
Node as cache storage
Shared compiler cache
Profiling!
04
Jenkins
Is Jenkins so slow or we are doing something wrong?
Is Jenkins so slow or we are doing something wrong?
Jenkins is ok.
Is Jenkins so slow or we are doing something wrong?
Jenkins is ok.
But…
Surprise #1
Rotation costs a lot
Surprise #2
It works much better with nginx
less jenkins.access.log | tail -n1000 | grep urt="-" | wc -l
407
Surprise #3
Some buttons are very dangerous
Surprise #3
Some buttons are very dangerous
Slave
Slave
One fundamental issue
Master
Slave
Slave
Slave
Slave
Slave
Slave
Users
What can you find in heap dump of OOM-Killed Jenkins?
What can you find in heap dump of OOM-Killed Jenkins?
Console logs
Console logs
Should be less than X MB
Verbose output goes to file
“>” and “tee” are amazing!
What can you find in heap dump of OOM-Killed Jenkins?
Console logs
What can you find in heap dump of OOM-Killed Jenkins?
Console logs
Build history
Build history
2000 entities or 3 days
Efficient rotator
What can you find in heap dump of OOM-Killed Jenkins?
Console logs
Build history
What can you find in heap dump of OOM-Killed Jenkins?
Console logs
Build history
Build artifacts
Build artifacts
Push to S3 directly from slaves
Don’t store anything on master
05
Nightmares Jenkins Plugins
Limit of number of builds
20K
Groovy Event Listener Plugin
all events
synchronized
groovy compilation
fixed since 1.010 (Mar 10, 2016)
Limit of number of builds
40K
Warnings Plugin
Just another parser of console log
parseConsole is “deprecated”
parseFile is allowed
0 warnings are very appreciated :)
Limit of number of builds
60K
Timestamper Plugin
Tail needs not only “tail”
fixed since 1.8.5 (Aug 31, 2016)
Limit of number of builds
60K
EC2 Plugin
Full list of all images in AWS
fixed since 1.35 (Jun 30, 2016)
Limit of number of builds
90K
Robot Framework Plugin
Green chart costs 100 times more
Replaced by xUnit Plugin
Limit of number of builds
120K
Build Failure Analyzer Plugin
One regexp
One stream
One thread
PR-57 is not accepted yet
Limit of number of builds
140K
Cleanup Workspace Plugin
`ü` breaks everything
PR-29 is not accepted yet
06
Morale
Final recommendations
Final recommendations
Think about scalability at first place
Final recommendations
Think about scalability at first place
Flakiness could be a huge problem
Final recommendations
Think about scalability at first place
Flakiness could be a huge problem
Reduce memory allocations
Final recommendations
Think about scalability at first place
Flakiness could be a huge problem
Reduce memory allocations
Cache as much as possible
Final recommendations
Think about scalability at first place
Flakiness could be a huge problem
Reduce memory allocations
Cache as much as possible
Failing builds can be expensive
Workflow
Slowness? Profile! Fix! Contribute!
Open source collaboration
Let’s make our life better ;)
Full list of our contributions related to this talk
• Jenkins
• ccache
• clcache
• EC2 Plugin
• S3 Plugin
• FluentD Plugin
• BuildRotator Plugin
• Groovy Event Listener Plugin
• Timestamper Plugin
• Robot Framework Plugin
• Build Failure Analyzer Plugin
• JVM GC Log Plugin for
FluentD
Thank you
Contact
Akbashev Alexander
GitHub: Jimilian
E-mail: alexander.akbashev@here.com

More Related Content

PDF
Running tests for every commit: Gerrit, Jenkins, Docker, AWS
PDF
Spinnaker at DevOpsDays Montreal
PDF
Spinnaker Chadev
PPTX
Spinnaker for Azure
PDF
Orchestrating VM & Container Deployments
PDF
Spinnaker - Bay Area AWS Meetup - 20160726
PPTX
Kenzan Spinnaker Meetup
PDF
Leveraging Ansible for CI/CD
Running tests for every commit: Gerrit, Jenkins, Docker, AWS
Spinnaker at DevOpsDays Montreal
Spinnaker Chadev
Spinnaker for Azure
Orchestrating VM & Container Deployments
Spinnaker - Bay Area AWS Meetup - 20160726
Kenzan Spinnaker Meetup
Leveraging Ansible for CI/CD

What's hot (20)

PDF
Immutable Infrastructure: Rise of the Machine Images
PDF
Safe deployments with Blue-Green and Spinnaker
PDF
Unlimited Staging Environments
PPTX
Continuous Delivery With Selenium Grid And Docker
PDF
Zero to Serverless - OpenFaaS at the Open Source Summit
PDF
Analyze This! CloudBees Jenkins Cluster Operations and Analytics
PDF
Zero to #Serverless in 60 seconds, anywhere
PPTX
Continuous Deployment to the Cloud using Spinnaker
PDF
OpenFaaS serverless framework for Docker and Kubernetes - London
PDF
Safe deployments with Blue-Green and Spinnaker
PDF
Continuous Testing
PDF
OpenFaaS JeffConf 2017 - Milan
PDF
PuppetConf 2016 Customer Keynote: Cloud, Containers & the Impact on IT - Jeff...
PDF
CNCF Intro & Demo - OpenFaaS framework
PDF
OpenFaaS KubeCon Zero to Serverless in 60 seconds anywhere
PDF
Building a Raspberry Pi cluster with Kubernetes, OpenFaaS and .NET
PDF
Ansible @ Red Hat | December 2015 Ansible Meetup in Melbourne
PPTX
Puppet and docker
PDF
Docker Cambridge: Serverless Functions Made Simple with OpenFaaS
PDF
Jenkins + Docker = Continuous Improvement
Immutable Infrastructure: Rise of the Machine Images
Safe deployments with Blue-Green and Spinnaker
Unlimited Staging Environments
Continuous Delivery With Selenium Grid And Docker
Zero to Serverless - OpenFaaS at the Open Source Summit
Analyze This! CloudBees Jenkins Cluster Operations and Analytics
Zero to #Serverless in 60 seconds, anywhere
Continuous Deployment to the Cloud using Spinnaker
OpenFaaS serverless framework for Docker and Kubernetes - London
Safe deployments with Blue-Green and Spinnaker
Continuous Testing
OpenFaaS JeffConf 2017 - Milan
PuppetConf 2016 Customer Keynote: Cloud, Containers & the Impact on IT - Jeff...
CNCF Intro & Demo - OpenFaaS framework
OpenFaaS KubeCon Zero to Serverless in 60 seconds anywhere
Building a Raspberry Pi cluster with Kubernetes, OpenFaaS and .NET
Ansible @ Red Hat | December 2015 Ansible Meetup in Melbourne
Puppet and docker
Docker Cambridge: Serverless Functions Made Simple with OpenFaaS
Jenkins + Docker = Continuous Improvement
Ad

Similar to Continuous Integration on Steroids (20)

PDF
Jenkins_1679702972.pdf
PDF
jenkins.pdf
PDF
Survival of the Continuist
PDF
Let’s start Continuous Integration with jenkins
PPTX
Jenkins an opensource CICD platform for all
PPTX
Introduction to jenkins
PDF
Continuous Integration
PPTX
OVerview of Jenkins - A WIP pPT that needs to be refined
PPT
Jenkins Overview
PPTX
Continuous integration using jenkins
PDF
Jenkins - Automating Yourself Out Of A Job (One That You Don't Want)
PDF
Agile Bodensee - Testautomation & Continuous Delivery Workshop
PPTX
Jenkins Introduction
PPTX
Test parallelization using Jenkins
PPTX
Introduction to jenkins for the net developer
PDF
Software Delivery in 2016 - A Continuous Delivery Approach
PPTX
IM5- Introduction to DevOps tooools.pptx
PPTX
Making software development processes to work for you
PDF
Introduction to Continuous Integration
PPTX
The Key Components of Adopting CI The OpenStack Way
Jenkins_1679702972.pdf
jenkins.pdf
Survival of the Continuist
Let’s start Continuous Integration with jenkins
Jenkins an opensource CICD platform for all
Introduction to jenkins
Continuous Integration
OVerview of Jenkins - A WIP pPT that needs to be refined
Jenkins Overview
Continuous integration using jenkins
Jenkins - Automating Yourself Out Of A Job (One That You Don't Want)
Agile Bodensee - Testautomation & Continuous Delivery Workshop
Jenkins Introduction
Test parallelization using Jenkins
Introduction to jenkins for the net developer
Software Delivery in 2016 - A Continuous Delivery Approach
IM5- Introduction to DevOps tooools.pptx
Making software development processes to work for you
Introduction to Continuous Integration
The Key Components of Adopting CI The OpenStack Way
Ad

Recently uploaded (20)

PPTX
OOP with Java - Java Introduction (Basics)
PDF
Well-logging-methods_new................
PDF
keyrequirementskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
PPT
Mechanical Engineering MATERIALS Selection
PDF
Evaluating the Democratization of the Turkish Armed Forces from a Normative P...
PPTX
Infosys Presentation by1.Riyan Bagwan 2.Samadhan Naiknavare 3.Gaurav Shinde 4...
PPTX
FINAL REVIEW FOR COPD DIANOSIS FOR PULMONARY DISEASE.pptx
PDF
R24 SURVEYING LAB MANUAL for civil enggi
PDF
composite construction of structures.pdf
DOCX
573137875-Attendance-Management-System-original
PDF
Mitigating Risks through Effective Management for Enhancing Organizational Pe...
PPTX
Welding lecture in detail for understanding
PDF
Embodied AI: Ushering in the Next Era of Intelligent Systems
PDF
Mohammad Mahdi Farshadian CV - Prospective PhD Student 2026
PPTX
UNIT-1 - COAL BASED THERMAL POWER PLANTS
PPTX
CARTOGRAPHY AND GEOINFORMATION VISUALIZATION chapter1 NPTE (2).pptx
PDF
Digital Logic Computer Design lecture notes
PPTX
additive manufacturing of ss316l using mig welding
PDF
July 2025 - Top 10 Read Articles in International Journal of Software Enginee...
PPTX
Engineering Ethics, Safety and Environment [Autosaved] (1).pptx
OOP with Java - Java Introduction (Basics)
Well-logging-methods_new................
keyrequirementskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
Mechanical Engineering MATERIALS Selection
Evaluating the Democratization of the Turkish Armed Forces from a Normative P...
Infosys Presentation by1.Riyan Bagwan 2.Samadhan Naiknavare 3.Gaurav Shinde 4...
FINAL REVIEW FOR COPD DIANOSIS FOR PULMONARY DISEASE.pptx
R24 SURVEYING LAB MANUAL for civil enggi
composite construction of structures.pdf
573137875-Attendance-Management-System-original
Mitigating Risks through Effective Management for Enhancing Organizational Pe...
Welding lecture in detail for understanding
Embodied AI: Ushering in the Next Era of Intelligent Systems
Mohammad Mahdi Farshadian CV - Prospective PhD Student 2026
UNIT-1 - COAL BASED THERMAL POWER PLANTS
CARTOGRAPHY AND GEOINFORMATION VISUALIZATION chapter1 NPTE (2).pptx
Digital Logic Computer Design lecture notes
additive manufacturing of ss316l using mig welding
July 2025 - Top 10 Read Articles in International Journal of Software Enginee...
Engineering Ethics, Safety and Environment [Autosaved] (1).pptx

Continuous Integration on Steroids