This document discusses continuous integration techniques at a company called HERE. It covers how HERE uses Jenkins for continuous integration, scaling Jenkins to handle a large number of builds per day, common issues encountered with Jenkins and plugins, and recommendations for optimizing continuous integration workflows. Specifically, it emphasizes the importance of considering scalability, reducing flakiness, minimizing memory usage, caching, and avoiding expensive failed builds. The presenter also encourages open source collaboration to improve build tools and workflows.
8. 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
16. What do we want to achieve?
Keep feedback time (< 20 min.)
17. What do we want to achieve?
Keep feedback time (< 20 min.)
Test as much as possible
18. What do we want to achieve?
Keep feedback time (< 20 min.)
Test as much as possible
… with debug symbols
19. What do we want to achieve?
Keep feedback time (< 20 min.)
Test as much as possible
… with debug symbols
… and code coverage information
20. 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
67. Final recommendations
Think about scalability at first place
Flakiness could be a huge problem
Reduce memory allocations
Cache as much as possible
68. 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