Доклад об одном из самых больших монолитных инстансов Jenkins в мире: один мастер переваривает больше 100 тысяч билдов в день и управляет в пике ~2500 executor'ов.
В докладе будут подняты следующие вопросы:
* Как развернуть CI в облаке?
* Как с помощью memcache экономить на железе для CI?
* Тормозит ли Jenkins сам по себе?
* Лайфхаки по использованию разных плагинов.
* Нужно ли мониторить GC у Jenkins?
* Какие плагины делают жизнь лучше, а какие - сильно хуже?
* Как сделать мониторинг Jenkins'a ~из скотча и линейки~ с FluentD + InfluxDB + Grafana.
И наверняка что-то еще...
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