extensible automation server built on the JVM with hundreds of plugins to support nearly every continuous integration, delivery and deployment pipeline imaginable 2
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, WSClean, maven-deployment-linker, … • Member of the Jenkins infra team – I love to reboot confluence J • Support Engineer 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.0? 25 ~/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 !! 27
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? 28
do I…what do I… • jenkins-ci.orgsite 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 isn’t only a CI. 29
• 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 • Built-in global library to share Pipeline scripts, functions, variables across jobs on your master. • Extend the DSL with your own steps. • Multibranch, automatic creation of jobs for new branches! • Durable tasks keep running while the Jenkins master restarts. 33
• Resumability from checkpoints (CloudBees Jenkins Platform only) • 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! 34
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 – [COMING SOON] – Pull-request builds • (+) Same thing for GitHub and BitBucket orgs – 1 single spec in Jenkins for the many projects Pipeline Features. Multi-Branch 41
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. 47
• Improved “New Item” page • More consistent terminology (like agent vs node vs slave) • The configuration pages are going to be less messy! – Tabs for everyone! 55
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? 59 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! 60
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 61
Roadmap • February 29: – Create a first "alpha” • March 16: – "feature complete" and cut alpha-4 release. Focus on making sure features landed work well • March 23: – beta release with announcement, calls for testing to broader audience. Launch jenkins.io 66
Roadmap • March 30: – Create first release candidate (RC), launch jenkins.io and push for RC feedback •April 6: – Create 2.0 proper release with last RC. • This summer – The first LTS based on 2.x will be released – 1.x maintenance will be stopped 67
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 70 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 74
• 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) 77
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 – ? 78
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...) • 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 84
2.0 now! • Jenkins 2.0 Final will be out in 2 weeks !! • Downloadand discover it from – jenkins.io / jenkins-ci.org/2.0 • Test alpha/beta/rc releases and share your feedback with the community – [email protected] – #jenkins IRC channel on Freenode • Come to discuss with us at the CloudBees booth @BreizhCamp 85