Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Jenkins Evolutions - JEEConf 2012
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Anton Arhipov
May 31, 2012
Programming
0
81
Jenkins Evolutions - JEEConf 2012
Anton Arhipov
May 31, 2012
Tweet
Share
More Decks by Anton Arhipov
See All by Anton Arhipov
Strengthening Immutability in Kotlin. A Glimpse into Valhalla
antonarhipov
2
56
Kotlin—the New and Noteworthy in 2.2
antonarhipov
1
23
Levels of AI-assisted programming
antonarhipov
0
87
Devoxx France 2024. Kotlin - the new and noteworthy
antonarhipov
2
79
Harnessing the power of AI in IntelliJ IDEA
antonarhipov
1
210
VirtualJUG: Kotlin 2.0 and beyond
antonarhipov
1
140
Kotlin 2.1: Language Updates
antonarhipov
3
180
Devoxx Belgium 2024 - Kotlin 2.0 and beyond
antonarhipov
2
180
Data Analysis with Kotlin Notebook, DataFrame, and Kandy
antonarhipov
1
120
Other Decks in Programming
See All in Programming
Amazon Bedrockを活用したRAGの品質管理パイプライン構築
tosuri13
5
760
Apache Iceberg V3 and migration to V3
tomtanaka
0
170
dchart: charts from deck markup
ajstarks
3
1k
Automatic Grammar Agreementと Markdown Extended Attributes について
kishikawakatsumi
0
200
副作用をどこに置くか問題:オブジェクト指向で整理する設計判断ツリー
koxya
1
610
Smart Handoff/Pickup ガイド - Claude Code セッション管理
yukiigarashi
0
140
CSC307 Lecture 07
javiergs
PRO
1
550
高速開発のためのコード整理術
sutetotanuki
1
410
QAフローを最適化し、品質水準を満たしながらリリースまでの期間を最短化する #RSGT2026
shibayu36
2
4.4k
AI によるインシデント初動調査の自動化を行う AI インシデントコマンダーを作った話
azukiazusa1
1
740
要求定義・仕様記述・設計・検証の手引き - 理論から学ぶ明確で統一された成果物定義
orgachem
PRO
1
160
360° Signals in Angular: Signal Forms with SignalStore & Resources @ngLondon 01/2026
manfredsteyer
PRO
0
130
Featured
See All Featured
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
250
Mobile First: as difficult as doing things right
swwweet
225
10k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
130
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
jQuery: Nuts, Bolts and Bling
dougneiner
65
8.4k
Crafting Experiences
bethany
1
49
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
93
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
220
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
The Cult of Friendly URLs
andyhume
79
6.8k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
120
The untapped power of vector embeddings
frankvandijk
1
1.6k
Transcript
Jenkins Evolu-ons Anton Arhipov ZeroTurnaround JRebel
@antonarhipov h/p://arhipov.blogspot.com
Why Evolu-ons?
Why Evolu-ons? test automa-on
Why Evolu-ons? con-nuous integra-on
Why Evolu-ons? con-nuous deployment
Why Evolu-ons? cron on steroids
Agenda ! Background ! Stories • Func-onal
tests • Servlet tests • Scaling ! Random stuff
Background -‐ 2008 ! First installa-on ! Clicked
“Run” when wanted to test stuff
Background 2012 ! 54 215 324 jobs
! 2 5 8 dedicated machines ! Amazon ~7000 instance-‐hour per month ! 3 in house plugin developed ! Custom dashboard (50 x 300 grid)
None
h6ps://github.com/
jenkinsci/ jenkins-‐scripts
Custom Dashboard
story of func-onal tests
JRebel Func-onal JDK Tests
JRebel Func-onal JDK Tests
JRebel Func-onal JDK Tests ! Per JDK •
Per func-onal test • Compile couple of classes • Run some methods and assert • Recompile couple of classes • Run some methods and assert • …
JRebel Func-onal JDK Tests ! Per JDK •
Per func-onal test • Compile couple of classes • Run some methods and assert • Recompile couple of classes • Run some methods and assert • …
JRebel Func-onal JDK Tests ! Per JDK •
Per func-onal test • Compile couple of classes • Run some methods and assert • Recompile couple of classes • Run some methods and assert • …
JRebel Func-onal JDK Tests ! Per JDK •
Per func-onal test • Compile couple of classes • Run some methods and assert • Recompile couple of classes • Run some methods and assert • …
JRebel Func-onal JDK Tests ! Per JDK …
! Which Jenkins feature is the best here?
JRebel Func-onal JDK Tests ! Configura-on matrix FTW!
JRebel Func-onal JDK Tests ! Executed with a
Groovy script
JRebel Func-onal JDK Tests
JRebel Func-onal JDK Tests ! How to get
results? Jenkins feature…
JRebel Func-onal JDK Tests ! Output JUnit XML!
JRebel Func-onal JDK Tests
JRebel Func-onal JDK Tests ! Creates ~ 10 000
new files ! Compile ~ 1700 java classes ! Invoke the JVM ~ 550 -mes
JRebel Func-onal JDK Tests Sloooooooow!
JRebel Func-onal JDK Tests ! I/O ! CPU
! Memory
JRebel Func-onal JDK Tests
JRebel Func-onal JDK Tests ! Bare metal !
Cloud ! Bare metal (+ cloud)
JRebel Func-onal JDK Tests ! Cloud • 1
small instance per JDK • Manual update of AMIs • Slow • Scales!
JRebel Func-onal JDK Tests ! Which Jenkins plugin
to use?
JRebel Func-onal JDK Tests ! Amazon EC plugin
JRebel Func-onal JDK Tests ! Bare metal •
8 core & 16GB RAM gaming machines • Recycled developer machines • Marke-ng demo machines (iMac) • Developer machines, ad-‐hoc (?)
Jenkins Master
Jenkins Master Windows Windows Windows
*nix *nix *nix *nix *nix
Jenkins Master Windows Windows Windows
*nix *nix *nix *nix *nix
Jenkins Master Windows Windows Windows
*nix *nix *nix *nix *nix My Laptop iMac
Adding new machines ! How to manage the
configura-ons? ! How to automate the setup?
Adding new machines ! Chef, Puppet
Taming I/O ! SSD: ~30% performance gain
story of servlet tests
Servlet Tests ! Start a container version •
WebSphere, Weblogic, JBoss, etc ! Deploy applica-ons ! Test results, reload changes, test results, …
Custom Dashboard
Servlet Tests ! How to start a server?
Servlet Tests ! Duh! With a startup script!
Servlet Tests ! Problem: 1 app server, 2
jobs. Which plugin to use?
Servlet Tests ! Thro/le Concurrent Builds plugin
Servlet Tests
Servlet Tests ! How do you deploy an
applica-on?
Servlet Tests ! Start Tomcat ! Copy WAR
files to webapps/ ! GET /some-‐url ! Assert ! Update applica-on ! GET /some-‐url ! Assert
Servlet Tests Sloooooooow!
Servlet Tests ! I/O ! CPU !
Memory
Tes-ng Mul-ple Containers ! Cloud • 1 small
instance per container • Need to update AMIs • Slow • Isola-on
Tes-ng Mul-ple Containers ! Single machine • Port
hell • Memory limits • Fast(er)!
story of DVCS
Story of DVCS ! Problem • Many servers
• Many containers • Many tests • Many JDKs ! Slow feedback cycle
Story of DVCS DEV N tests on N
servers (30 minutes) STABLE M tests on M servers (3 hours) Tests green? Push to branch/repository
Story of DVCS
Story of DVCS
scalability
Story of Scaling ! Problem • Exponen-al growths
of tests • (containers) X (configurations) X (tests) + const! • Fight for executors
Story of Scaling ! Add more machines? !
Spin up more cloud instances? ! A/ach developer machines at night? ! Cut tests scope?
Story of Scaling ! Jenkins helps with elas-city!
Story of Scaling ! Jenkins helps with elas-city!
WIN!
random stuff
Random Stuff ! There’s an app plugin for
that!
Some Cool Plugins ! Mercurial plugin ! Thro/le
Concurrent Builds plugin ! Matrix Configura-on plugin ! Matrix Reloaded plugin ! SSH slaves plugin ! Publish over SSH plugin ! Copy Ar-fact plugin ! Copy to slave plugin
Some Cool Plugins: Con-nuous Deployment !
Build Pipeline plugin ! Parametrized Trigger plugin ! Downstream Buildview plugin ! Fingerprints h6p://zeroturnaround.com/blog/how-‐to-‐use-‐jenkins-‐for-‐job-‐chaining-‐and-‐visualizaQons/
Some Cool Plugins ! Chuck Norris plugin BUILD
SUCCESSFUL
Some Cool Plugins ! Chuck Norris plugin BUILD
FAILED
Build-‐it-‐all! JRebel
Build-‐it-‐all! JRebel
Build-‐it-‐all! IntelliJ NetBeans Eclipse Installer
JRebel
Build-‐it-‐all! IntelliJ NetBeans Eclipse Installer
JRebel
Build-‐it-‐all! IntelliJ NetBeans Eclipse Installer
JRebel Tests
UI
None
None
None
None
QuesQons?