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
Anton Arhipov
May 31, 2012
Programming
89
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Jenkins Evolutions - JEEConf 2012
Anton Arhipov
May 31, 2012
More Decks by Anton Arhipov
See All by Anton Arhipov
Spec-Driven Development with AI-Agents: From High-Level Requirements to Working Software
antonarhipov
2
650
Spec-Driven Development with AI Agents (Workshop, May 2026)
antonarhipov
4
570
Spec-Driven Development with AI Agents. Java Day Istanbul 2026
antonarhipov
3
150
Spec-Driven Development with AI Agents: From High-Level Requirements to Working Software
antonarhipov
3
180
Strengthening Immutability in Kotlin. A Glimpse into Valhalla
antonarhipov
3
120
Kotlin—the New and Noteworthy in 2.2
antonarhipov
1
58
Levels of AI-assisted programming
antonarhipov
0
180
Devoxx France 2024. Kotlin - the new and noteworthy
antonarhipov
2
120
Harnessing the power of AI in IntelliJ IDEA
antonarhipov
1
270
Other Decks in Programming
See All in Programming
まだ間に合う!今年の夏こそSchemeのマクロ展開器を完全理解!
omasanori
0
630
初めての模倣学習とVLA
natsutan
0
490
書籍「プロフェッショナルAI駆動開発」紹介スライド
juntaromatsumoto
0
990
Go 1.27からのGODEBUG / Go 1.27 リリースパーティ #go127party
mazrean
0
320
Webエンジニアなのにブラウザの仕組みがわからないので、Pythonで自作してみた
tatsuki12
4
1.7k
LoopHub - ローカルで動く GitHub で、AI と共同開発
jugyo
0
440
片田舎のおっさん、 Swift Buildのダイアモンド問題解決の不具合修正PRを出すが、解決方法がキャッシュをしないようにすることであり、ビルド時間が伸びると言われてマージされないので高速化もする/swiftbuild
yimajo
0
360
Seeing Through Serverless: Observability for AWS Lambda with ADOT and CloudWatch Application Signals
seike460
PRO
1
120
[KotlinConf Extended South Korea 2026] KotlinConf 2026 발표자 후기
wisemuji
0
100
in-process GraphQL のすすめ #ginzajs
izumin5210
4
1.5k
Hono + Inertia + React で LP を構築した話
oukayuka
2
210
Laravelのアプリケーションをどこにデプロイするか #ツナギメオフライン.9
akase244
0
120
Featured
See All Featured
Color Theory Basics | Prateek | Gurzu
gurzu
0
460
Paper Plane (Part 1)
katiecoart
PRO
1
11k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
The untapped power of vector embeddings
frankvandijk
2
1.9k
Mobile First: as difficult as doing things right
swwweet
225
10k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
200
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
490
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
520
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.7k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
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?