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
0
80
Jenkins Evolutions - JEEConf 2012
Anton Arhipov
May 31, 2012
Tweet
Share
More Decks by Anton Arhipov
See All by Anton Arhipov
Levels of AI-assisted programming
antonarhipov
0
50
Devoxx France 2024. Kotlin - the new and noteworthy
antonarhipov
2
37
Harnessing the power of AI in IntelliJ IDEA
antonarhipov
1
170
VirtualJUG: Kotlin 2.0 and beyond
antonarhipov
1
110
Kotlin 2.1: Language Updates
antonarhipov
3
140
Devoxx Belgium 2024 - Kotlin 2.0 and beyond
antonarhipov
2
170
Data Analysis with Kotlin Notebook, DataFrame, and Kandy
antonarhipov
1
85
Kotlin 2.0 and Beyond
antonarhipov
2
250
Kotlin Standard Library Gems
antonarhipov
2
510
Other Decks in Programming
See All in Programming
一人でAIプロダクトを作るための工夫 〜技術選定・開発プロセス編〜 / I want AI to work harder
rkaga
13
2.8k
RDoc meets YARD
okuramasafumi
3
140
WebAssemblyインタプリタを書く ~Component Modelを添えて~
ruccho
1
920
マイコンでもRustのtestがしたい その2/KernelVM Tokyo 18
tnishinaga
2
2.3k
20250808_AIAgent勉強会_ClaudeCodeデータ分析の実運用〜競馬を題材に回収率100%の先を目指すメソッドとは〜
kkakeru
0
210
画像コンペでのベースラインモデルの育て方
tattaka
3
1.9k
DockerからECSへ 〜 AWSの海に出る前に知っておきたいこと 〜
ota1022
5
1.8k
オープンセミナー2025@広島LT技術ブログを続けるには
satoshi256kbyte
0
130
ゲームの物理
fadis
5
1.5k
Constant integer division faster than compiler-generated code
herumi
2
700
Introduction to Git & GitHub
latte72
0
120
LLMOpsのパフォーマンスを支える技術と現場で実践した改善
po3rin
8
990
Featured
See All Featured
Gamification - CAS2011
davidbonilla
81
5.4k
Code Review Best Practice
trishagee
70
19k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.6k
Balancing Empowerment & Direction
lara
2
590
GraphQLとの向き合い方2022年版
quramy
49
14k
Building Adaptive Systems
keathley
43
2.7k
Unsuck your backbone
ammeep
671
58k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
Intergalactic Javascript Robots from Outer Space
tanoku
272
27k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
44
2.5k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
Optimizing for Happiness
mojombo
379
70k
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?