1. Jenkins User Conference Shefayim, Jun 2013 #jenkinsci
Jenkins: State of Union
#jenkinsci
Kohsuke Kawaguchi
Jenkins Creator
kk@kohsuke.org / @kohsukekawa
17. Jenkins User Conference Shefayim, Jun 2013 #jenkinsci
http://www.flickr.com/photos/randar/3879926596/
18. Jenkins User Conference Shefayim, Jun 2013 #jenkinsci
Lazy loading of build records
• Jenkins slow to start up?
– It was loading build records upon boot
• This is finally fixed, including fallouts
– Loaded on demand
– In weak references
• Now on LTS: 1.509.1
19. Jenkins User Conference Shefayim, Jun 2013 #jenkinsci
Master/slave performance
• Better sustained data transfer rate
– Copy large files, test reports, etc
– Now on par with scp
• Classloading improvements
– Local cache & prefetching
– Will help ephemeral/elastic slaves & maven jobs
20. Jenkins User Conference Shefayim, Jun 2013 #jenkinsci
Performance/Scalability Improvements
• Lock strength reduction
• Fingerprint scalability improvements
• Better caching of images & scripts in UI
• The “people” page
• Handling large test result
21. Jenkins User Conference Shefayim, Jun 2013 #jenkinsci
Testing Improvements
• Previous testing scheme
– Embedded Jetty in Maven
– Code from ~/.m2/repository and resources from
war
– The setup was different from how you run it
22. Jenkins User Conference Shefayim, Jun 2013 #jenkinsci
New Blackbox Acceptance Test
• Tests the final deliverables
– jenkins.war, .deb, .rpm, etc
– With Tomcat, JBoss, or “java -jar jenkins.war”
• In different OSes
– In VirtualBox (via vagrant)
– Hopefully with EC2 (upcoming)
• Tests via Selenium
– Capybara + Cucumber
– Sauce OnDemand to test different browsers
23. Jenkins User Conference Shefayim, Jun 2013 #jenkinsci
Database Plugin
• For other plugins, not for users
– But large data set in RDBMS should result in tangible
benefits for users
• Provides unified database connectivity
– UI for admin to select the backend
– Expose DataSource for other plugins
– JPA support, per-job database
• Looking for plugins to start using this
24. Jenkins User Conference Shefayim, Jun 2013 #jenkinsci
Plugins that generate jobs
• Job DSL plugin
– Groovy DSL for describing job definitions
– DSL can be evaluated from within Jenkins
– E.g., automatically generate new jobs for new
branches
• Job Generator plugin
– Create a new ste of jobs from “template jobs” by
eagerly evaluating some build parameters
25. Jenkins User Conference Shefayim, Jun 2013 #jenkinsci
Build Flow Plugin
• Groovy DSL for kicking builds
– High-level primitives
– Ability to define abstractions
b = build(“acme-build”)
guard {
parallel (
{ build(“acme-test1”, param1:b.number) },
{ build(“acme-test2”, param1:b.number) }
)
} rescue {
build(“acme-teardown”)
}
26. Jenkins User Conference Shefayim, Jun 2013 #jenkinsci
Jenkow Plugin
• Embed BPMN workflow engine
in Jenkins
– Timeout, fork, join, …
• Workflow is version controlled
in Git
– Push to Jenkins to load them up
27. Jenkins User Conference Shefayim, Jun 2013 #jenkinsci
Recipe Plugin
• Sharing a set of jobs and other settings in
Jenkins with the community
• Convenient for…
– Sample setup / quick start for plugins
– Show cases
• Simplify the first “getting started” phase
28. Jenkins User Conference Shefayim, Jun 2013 #jenkinsci
Parallel Test Executor Plugin
• Split tests N-way, run them in parallel
• Create even splits by using timing information
Test Group #1 Test Group #2 Test Group #3
31. Jenkins User Conference Shefayim, Jun 2013 #jenkinsci
Future Direction: Which Way?
http://www.flickr.com/photos/quinnanya/3500158343/
32. Jenkins User Conference Shefayim, Jun 2013 #jenkinsci
Make Complex Things Doable
• Running big, complex deployment should be
easier
– Master-to-master communication channel
– Per-job database storage, open for plugins
• More automatic slave managements
– Better diagnostics
• Access control for running builds
33. Jenkins User Conference Shefayim, Jun 2013 #jenkinsci
Make Complex Things Doable
• Better Workflow/pipeline support
– Already a lot going on in plugins!
– Slice up build histories
– Shared context between related builds
• Modeling external systems
– Databases, test environments, …
– Remembering who’s using what
– Remember what was done to them
34. Jenkins User Conference Shefayim, Jun 2013 #jenkinsci
Make Simple Things Simpler
• More spying, less asking
– E.g., “where are unit test reports?”
• Simpler project creation ala BuildHive
– Only needs to be 70% accurate
– Sharable archetypes, repository sniffing
• Encourage sharing of recipes
35. Jenkins User Conference Shefayim, Jun 2013 #jenkinsci
Help You Find Plugins You Need
• Revisit bundled plugins
– Why Git plugin isn’t in there?
• Plugin packs (aka iTunes playlist)
– Follow the lead of the Jenkins PHP website
• Recommendation based on what you have
• Reviews, feedbacks
36. Jenkins User Conference Shefayim, Jun 2013 #jenkinsci
More UI Improvements
• FOSDEM-driven on-going effort
• TODO in this round:
– Hunt on stale data in HTML
– Performance on loading config page
– More compact UI controls
37. Jenkins User Conference Shefayim, Jun 2013 #jenkinsci
Improving Plugin Development Experience
• More extension points
• Better Plugin Development Environment
– More Wiki articles/samples?
– Training course?
• Better development mode
– Skeleton generation
– Checking common pitfalls in the dev mode
• Tell us what you need!
38. Jenkins User Conference Shefayim, Jun 2013 #jenkinsci
Conclusions
• A lot has been done, not just in code
– And a lot more to come!
• Please help the project
• Please enjoy the day!