extensible automation server built on the JVM with hundreds of plugins to support nearly every continuous integration, delivery and deployment pipeline imaginable 2
Latombe • Long time Jenkins user and community member – January 2010 : My first discussion on the mailing list and my first ticket about Jenkins born Hudson 1.342 on ClearCase plugin. • Contributor on various plugins: – ClearCase, Mesos, Git, Literate, Maven, linenumbers… • Engineer at CloudBees, Inc – Deploying Jenkins massively on your private cloud 3 @VLatombe vlatombe
is now 11 years old. No, really. • Lots of great stuff has gone into Jenkins in the last couple years but users don’t know about them! • Oh, and some fairly big changes! Why 2.0? 9 ~/Code/jenkinsci/jenkins/war (git:master %)$ mvn dependency:list ... [INFO] org.acegisecurity:acegi-security:jar:1.0.7:compile ... [INFO] org.springframework:spring-core:jar:2.5.6.SEC03:compile ... [INFO] com.google.guava:guava:jar:11.0.1:compile ... [INFO] org.codehaus.groovy:groovy-all:jar:1.8.9:compile ... Apr 2008 Oct 2008 Jan 2012 Feb 2013
Complicated • Installing Jenkins is easy – But then you need to find the right plugins… – And setting up security… – And eighty other things you probably forgot about… •That should be easier !! 11
is eating the software that is eating the world. • More shops moving in this direction. • Jenkins is a key part of how they get there. • New use cases need new user interfaces - one size doesn’t always fit all. • How can we make adopting Jenkins for CD smoother without limiting the power Jenkins has for other use cases? Continuous Delivery 13
do I…what do I… • jenkins-ci.org site is 6 years old, give or take. – Old tooling. – Awkward content discovery. – Not a great way to share documentation and guides. – wiki.jenkins-ci.org is there too, but it’s not easy to navigate. • Brand – jenkins-ci.org ! CI ?!? o Jenkins is an automation tool before everything else. 14
is this part of the 2.0 release? Can’t you just update the website whenever? • Sure, but like we said, the changes we’re making to the website are to address a lot of the things 2.0 proper is addressing: – On-boarding – Plugin discovery – Documentation – Examples and resources Website as part of release? 19 59
guts • Current website – Drupal – Dynamically generated – Hard to contribute to - gotta get an account, submit a blog post, etc… • New website – Static site generation – Awestruct and Asciidoc – Contributing? Just submit a pull request to https://github.com/ jenkins-infra/jenkins.io and tada! 20
documentation and reference • What we’re calling “Solutions Pages” – Landing pages for collections of docs, blog posts, reference material and advice for specific Jenkins use cases. – i.e., a Ruby solution page, a Docker solution page, etc • A one-stop-shop for finding what you *need* to know for your Jenkins usage. • SOON: The Jenkins definitive guide, a real browsable end-user documentation 21
Box User Experience • New setup wizard! • Security configuration is part of the setup wizard! – …because we all forget to configure security sometimes. • A better, broader set of plugins included by default! – Less need to go hunting through 1100+ plugins. 25
• Improved “New Item” page • Tabs to organize jobs configuration pages • New Global Tool Configuration page • More consistent terminology (like agent vs node vs slave) 34
• Introduce “pipeline” as a new type in Jenkins • Codify an implicit series of stages into an explicit Jenkinsfile in your source repository or directly in your job definition • Extend the DSL with your own steps. • Built-in global library to share Pipeline scripts, functions, variables across jobs on your master. • Durable tasks keep running while the Jenkins master restarts. 39
• Execute arbitrary build steps in parallel easily. • Allow manual input from users before continuing to the next step. • A single pipeline working across multiple agents or SCM repositories. No need to glue multiple jobs together anymore. • Resume build from checkpoints (CloudBees Jenkins Platform only) 40
Plugin – Job configuration only contains reference to the SCM (Git/ GitHub, BitBucket…) – Jenkins takes Pipeline from Jenkinsfile in SCM – Jenkins creates separate subtasks for branches, builds and reports results separately – Pull-request builds • Organization Folder Plugin (Same thing for GitHub and BitBucket orgs) – 1 single spec in Jenkins for the many projects – Jenkins creates separate multi-branch folders for each repository Pipeline Features. Multi-Branch 48
• Jenkins 2.0 tagged and released • April 25th • Jenkins 2.0 announced • This summer (~July) • First LTS based on 2.x will be released • 1.x maintenance will be stopped 2.x Timeline / Roadmap 56
Discussing “2.0” started conversations about much bigger and involved changes • The “weekly incremental release” model has left big challenges unaddressed • Aging user interface layer is difficult to substantially improve 59 https://wiki.jenkins-ci.org/display/JENKINS/Jenkins+2.0
Model “Application” and “Environments” in Jenkins • Inform Jenkins of what happens with them – synchronous: build owns the deployment – asynchronous: external reporters/deployment tools notify Jenkins upon completion • Expose what’s “in” Environments – Differences between deployments, e.g. commits, tickets, etc 63
• Configurations, build records, logs, fingerprints and artifacts all currently live on master node • Reduce local disk dependency on master node • Pluggable storage backend – BYODB (bring your own data backend) 65
Clustering • Break the single-JVM master node into a conceptual “master” across multiple JVMs • Prevent need for “hard downtime” to modify, etc • Must still run as a single instance • Evaluate multi-tenancy via: – Access controls – Per-folder configuration separation – ? 66
• ES6, React, NPM • js-modules • Client-side Extension Points • Blue Ocean libraries are built on ES6 and React.js and provide an extensible client-side component model • Server Sent Events • UI updated in real time Modern Toolset 71
is a new start for the community. • But 2.x is just a drop-in replacement for 1.x – With the exception of the servlet 3.1 (Java EE 7) container pre- requisite (Apache Tomcat 8, Wildfly 8, Glassfish 4, Websphere 9...) • All the technical evolutions (like javascript modularization) are in place to revolution Jenkins in a near future. • The usage of major versions is a good change which will enforce to identify and accept breaking changes to – define a clearer roadmap for users ( 3.x, 4.x, …. ) – organize this middle/long term work within the team Conclusion 80
2.0 now! • Jenkins 2 is here! • Download and discover it from – jenkins.io / jenkins.io/2.0 • Give weekly releases a try and share your feedback with the community • [email protected] • #jenkins IRC channel on Freenode 81
to R. Tyler Croy, Oleg Nenashev and James Dumay for all the inputs to create this presentation • Thanks to Arnaud Heritier who created the first version of this slide deck. 83