Héritier • Long time Jenkins user and community member – August 2007 : My first discussion on the mailing list and my first ticket about Jenkins born Hudson 1.131 • Contributor on various plugins: – Maven, Xcode, Appaloosa, … • Member of the Jenkins infra team – I love to reboot confluence J • Support Team Manager at CloudBees, Inc – I help our customers to get the best from Jenkins 3 @aheritier aheritier
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.x? 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 ...
Complicated • Installing Jenkins? That’s easy. – But then there’s finding the right plugins… – And setting up security… – And eighty other things you probably forgot about… •That should be easier !! 11
All the Things • Continuous Delivery 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? 12
do I…what do I… • Documentation – jenkins-ci.org site was 6 years old o Old tooling. o Awkward content discovery. o 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 isn’t only a CI. 13
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? 17 17
guts • Previous website – Drupal – Dynamically generated – Hard to contribute to - gotta get an account, submit a blog post, etc… • Current website – Static site generation – Awestruct and Asciidoc – Contributing? Just submit a pull request to https://github.com/jenkins-infra/jenkins.io and tada! 18
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. • ASAP: The Jenkins definitive guide, a real browsable end-user documentation 19
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. 23
• Improved “New Item” page • Jobs configuration pages are going to be less messy! – Tabs for everyone! • New Global Tool Configuration page • More consistent terminology (exemple: agent vs node vs slave) 25
• Introduce “pipeline” as a new type in Jenkins • Codify an implicit series of stages/steps directly in your job definition or into an explicit Jenkinsfile in your/a source repository • Built-in global library to share Pipeline scripts, functions, variables across jobs on your master. • Extend the DSL with your own steps. • Durable tasks keep running while the Jenkins master restarts. 27
• Execute arbitrary build steps in parallel easily. • Have jobs wait for input from users before continuing to the next step. • No more need to glue multiple jobs together to do one connected pipeline across multiple nodes or repos! • Run part of the job on one node, then switch to another node! • Check out multiple SCM repositories into one job! • Resumability from checkpoints (CloudBees Jenkins Platform only) 28
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 • Organisation 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 29
Roadmap • April 21st: – Jenkins 2.0 was tagged and released • April 25th: – Jenkins 2.0 is announced • July 6th: – The first LTS based on 2.x: 2.7.1 – 1.x maintenance is stopped 34
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 37 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 41
• Configurations, build records, logs, fingerprints and artifacts all currently live on master node • Reduce local disk dependency on master node • Storage backend pluggability – BYODB (bring your own data backend) 43
Clustering • Break a 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 – ? 44
toolchain – 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 update in real time Modern Technologies 49
is a new start for the community. • But 2.0 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...) and the removal of the AJP connector from the embedded Winstone-Jetty container • 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 62
2.x now! • Jenkins 2 is here !! • Download and discover it from – jenkins.io / jenkins.io/2.0 • Give a try to weekly releases and share your feedback with the community – [email protected] – #jenkins IRC channel on Freenode 63