Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf
Jenkins Evolutions
Toomas RömerZeroTurnaroundTartu, Estonia, 5500miles
@toomasrhttp://dow.ngra.de/
Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf
Why Evolutions?
Testing
Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf
Why Evolutions?
Continuous Integration
Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf
Why Evolutions?
Continuous Deployment
Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf
Why Evolutions?
Workflow management– Trigger jobs– Join jobs
Building softwareTesting buildsPropagating DVCS repositoriesUpdating website– Changelog– Documentation– Nightly builds
Release management
Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf
Why Evolutions?
AuthenticationAuthorizationLoggingNotificationsRemote machines
Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf
Why Evolutions?
Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf
Why Evolutions?
Cron on Steroids
Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf
Agenda
Background
Stories–Functional Tests–Servlet Tests–Random Thoughts
Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf
Background - 2008
First installation
Clicked “Run” when wanted to test stuff
Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf
Background - 2011
200 jobs
5 dedicated machines
Amazon ~7000 instance-hour per month
3 in house plugins developed, 2 abandoned
Custom dashboard (35 x 215 grid)
Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf
Custom Dashboard
Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf
Story of Functional Tests
Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf
Functional JDK Tests
Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf
Functional JDK Tests
Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf
Functional JDK Tests
Per JDK– Per functional test
• Compile couple of classes• Run some methods and assert• Recompile couple of classes• Run some methods and assert• …
Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf
Functional JDK Tests
Which Jenkins feature is the best fit here?
Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf
Functional JDK Tests
Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf
Functional JDK Tests
Creates about 10 000 new files
Compile about 1700 Java class files
Invoke the JVM 550 times
Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf
Functional JDK Tests
Groovy Script
Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf
Functional JDK Tests
Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf
Functional JDK Tests
How to get test results? Jenkins feature…
Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf
Functional JDK Tests
Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf
Functional JDK Tests
Sloooow
Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf
Functional JDK Tests
IO
CPU
Memory
Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf
Functional JDK Tests
Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf
Functional JDK Tests
Cloud– 1 small instance per JDK
– Manual update of AMIs
– Slow
– Scales!
Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf
Functional JDK Tests
Which Jenkins plugin to use?
Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf
Functional JDK Tests
Which Jenkins plugin to use for results?
Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf
Functional JDK Tests
SSD– 30% gain in time, that’s it
Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf
Story of Servlet Tests
Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf
Servlet tests
Start a container version– Websphere, Weblogic, Glassfish etc.
Deploy applications
Test results, reload changes, test results…
Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf
Servlet Tests
Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf
Servlet Tests
Interface aliases
Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf
Servlet Tests – 1 server, 2 jobs
Which Jenkins feature to use?
Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf
Servlet Tests – 1 server, 2 jobs
Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf
ServletTests – 1 server, 2 jobs
Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf
ServletTests
Deployment
Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf
Servlet test
Start TomcatCopy WAR files to webapps/
GET /some-urlAssertUpdate applicationGET /some-urlAssert
Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf
Sloooow
Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf
Servlet tests
Memory
IO
CPU
Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf
Testing Multiple Containers
Cloud– 1 Small instance per Container
– Need to update AMIs
– Slow
– Isolation
Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf
Single Machine
Port Hell
Memory Limits
Speed
Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf
Story of DVCS
Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf
Dev and stable
Continuous integration– Slow feedback cycle
– Red results
– Envs impossible to duplicate
Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf
Dev and stable
2 phase continuous integration– Subset of the full test suite
– On success propagate to stable• hg push …
– Run full test suite
Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf
General observations
Fight for executors– Don’t do multiple releases on the same day
Optimum utilization
Feedback should be quick
Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf
Thank You To Our SponsorsPlatinumSponsor
GoldSponsor
SilverSponsor
BronzeSponsors
Coming Soon: The CloudBees Newsletter for Jenkins
Please complete the Jenkins survey to help us better serve the community
(bonus: a chance to win an Apple TV!)