Slide 1

Slide 1 text

© 2016 CloudBees, Inc. All Rights Reserved © 2016 CloudBees, Inc. All Rights Reserved Jenkins 2 ParisJAM – 2015-09-06

Slide 2

Slide 2 text

© 2016 CloudBees, Inc. All Rights Reserved Thanks • Reda & Medhi to lead the Paris JAM • Océane Consulting for the sponsoring 2

Slide 3

Slide 3 text

© 2016 CloudBees, Inc. All Rights Reserved About me Arnaud 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

Slide 4

Slide 4 text

© 2016 CloudBees, Inc. All Rights Reserved 4 https://groups.google.com/d/msg/jenkinsci-dev/vbXK7JJekFw/BlEvO0UxBgAJ

Slide 5

Slide 5 text

© 2016 CloudBees, Inc. All Rights Reserved Developers community reaction to the announce 5 https://www.flickr.com/photos/kilgarron/9151943045

Slide 6

Slide 6 text

© 2016 CloudBees, Inc. All Rights Reserved My reaction as a Jenkins user 6 https://pixabay.com/en/fear-fright-danger-horror-scared-1172372/

Slide 7

Slide 7 text

© 2016 CloudBees, Inc. All Rights Reserved Let’s discuss • Why Jenkins 2? • What is Jenkins 2? • Road beyond 2… 7

Slide 8

Slide 8 text

© 2016 CloudBees, Inc. All Rights Reserved © 2016 CloudBees, Inc. All Rights Reserved Why Jenkins 2?

Slide 9

Slide 9 text

© 2016 CloudBees, Inc. All Rights Reserved • 1.x line 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 ...

Slide 10

Slide 10 text

© 2016 CloudBees, Inc. All Rights Reserved Overwhelmed by Jenkins? Me too. Dear Mr Jenkins, There are too many plugins these days. Please eliminate three hundred. P.S. I am not a crackpot. 10

Slide 11

Slide 11 text

© 2016 CloudBees, Inc. All Rights Reserved Initial Experience is 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

Slide 12

Slide 12 text

© 2016 CloudBees, Inc. All Rights Reserved Continuous Delivery of 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

Slide 13

Slide 13 text

© 2016 CloudBees, Inc. All Rights Reserved How do I…where 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

Slide 14

Slide 14 text

© 2016 CloudBees, Inc. All Rights Reserved © 2016 CloudBees, Inc. All Rights Reserved Meet Jenkins 2.x jenkins.io/2.0

Slide 15

Slide 15 text

© 2016 CloudBees, Inc. All Rights Reserved 2.0 Themes New Jenkins Website Improved “out of the box” user experience User interface improvements Pipeline as code jenkins.io/content/jenkins-20-proposals/ 15

Slide 16

Slide 16 text

© 2016 CloudBees, Inc. All Rights Reserved © 2016 CloudBees, Inc. All Rights Reserved New Jenkins Website 16

Slide 17

Slide 17 text

© 2016 CloudBees, Inc. All Rights Reserved • Wait, why 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

Slide 18

Slide 18 text

© 2016 CloudBees, Inc. All Rights Reserved New website: the 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

Slide 19

Slide 19 text

© 2016 CloudBees, Inc. All Rights Reserved Better home for 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

Slide 20

Slide 20 text

© 2016 CloudBees, Inc. All Rights Reserved http://jenkins-ci.org 20

Slide 21

Slide 21 text

© 2016 CloudBees, Inc. All Rights Reserved https://jenkins.io 21

Slide 22

Slide 22 text

© 2016 CloudBees, Inc. All Rights Reserved © 2016 CloudBees, Inc. All Rights Reserved Better Out-of-the-box UX

Slide 23

Slide 23 text

© 2016 CloudBees, Inc. All Rights Reserved Out of the 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

Slide 24

Slide 24 text

© 2016 CloudBees, Inc. All Rights Reserved © 2016 CloudBees, Inc. All Rights Reserved User Interface Improvements 24

Slide 25

Slide 25 text

© 2016 CloudBees, Inc. All Rights Reserved User Interface Improvements • 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

Slide 26

Slide 26 text

© 2016 CloudBees, Inc. All Rights Reserved © 2016 CloudBees, Inc. All Rights Reserved Pipeline as Code 26

Slide 27

Slide 27 text

© 2016 CloudBees, Inc. All Rights Reserved Pipeline as Code • 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

Slide 28

Slide 28 text

© 2016 CloudBees, Inc. All Rights Reserved Pipeline as Code • 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

Slide 29

Slide 29 text

© 2016 CloudBees, Inc. All Rights Reserved • Multi-Branch Pipeline 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

Slide 30

Slide 30 text

© 2016 CloudBees, Inc. All Rights Reserved • More plugin integrations • Pipeline syntax highlighting and docs in IDE • Graphical editor of Jenkins pipelines Pipeline - Coming soon… 30

Slide 31

Slide 31 text

© 2016 CloudBees, Inc. All Rights Reserved Graphical Pipeline Editor 31 https://github.com/jenkinsci/pipeline-editor-plugin

Slide 32

Slide 32 text

© 2016 CloudBees, Inc. All Rights Reserved © 2016 CloudBees, Inc. All Rights Reserved 2.x Timeline / Roadmap 32

Slide 33

Slide 33 text

© 2016 CloudBees, Inc. All Rights Reserved 33

Slide 34

Slide 34 text

© 2016 CloudBees, Inc. All Rights Reserved 2.x Timeline / 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

Slide 35

Slide 35 text

© 2016 CloudBees, Inc. All Rights Reserved © 2016 CloudBees, Inc. All Rights Reserved Road Beyond 2.0

Slide 36

Slide 36 text

© 2016 CloudBees, Inc. All Rights Reserved © 2016 CloudBees, Inc. All Rights Reserved 2.0 Retrospective 36

Slide 37

Slide 37 text

© 2016 CloudBees, Inc. All Rights Reserved 2.0 Retrospective • 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

Slide 38

Slide 38 text

© 2016 CloudBees, Inc. All Rights Reserved ten·ta·tive (tĕn′tə-tĭv) adj. Not fully worked out, concluded, or agreed upon; provisional 38

Slide 39

Slide 39 text

© 2016 CloudBees, Inc. All Rights Reserved Themes Continuous Delivery Scalability & Availability User Experience 39

Slide 40

Slide 40 text

© 2016 CloudBees, Inc. All Rights Reserved © 2016 CloudBees, Inc. All Rights Reserved Continuous Delivery 40

Slide 41

Slide 41 text

© 2016 CloudBees, Inc. All Rights Reserved Continuous Delivery • 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

Slide 42

Slide 42 text

© 2016 CloudBees, Inc. All Rights Reserved © 2016 CloudBees, Inc. All Rights Reserved Scalability & Availability 42

Slide 43

Slide 43 text

© 2016 CloudBees, Inc. All Rights Reserved Storage & Availability • 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

Slide 44

Slide 44 text

© 2016 CloudBees, Inc. All Rights Reserved Storage & Availability: 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

Slide 45

Slide 45 text

© 2016 CloudBees, Inc. All Rights Reserved Storage & Availability: Clustering • Defer more “master” work out to separate JVMs • Develop more “stateless” components which can scale horizontally 45

Slide 46

Slide 46 text

© 2016 CloudBees, Inc. All Rights Reserved © 2016 CloudBees, Inc. All Rights Reserved More UI improvements … 46

Slide 47

Slide 47 text

© 2016 CloudBees, Inc. All Rights Reserved Plugin Manager… 47

Slide 48

Slide 48 text

© 2016 CloudBees, Inc. All Rights Reserved © 2016 CloudBees, Inc. All Rights Reserved Blue Ocean A new user experience for Jenkins 48 https://jenkins.io/projects/blueocean/

Slide 49

Slide 49 text

© 2016 CloudBees, Inc. All Rights Reserved • Modern JavaScript 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

Slide 50

Slide 50 text

© 2016 CloudBees, Inc. All Rights Reserved Jenkins Design “Language” 50

Slide 51

Slide 51 text

© 2016 CloudBees, Inc. All Rights Reserved Blue Ocean – Dashboard

Slide 52

Slide 52 text

© 2016 CloudBees, Inc. All Rights Reserved Blue Ocean – Pipeline Job - Activity

Slide 53

Slide 53 text

© 2016 CloudBees, Inc. All Rights Reserved Blue Ocean – Pipeline Job - Branches

Slide 54

Slide 54 text

© 2016 CloudBees, Inc. All Rights Reserved Blue Ocean – Pipeline Job – Pull requests

Slide 55

Slide 55 text

© 2016 CloudBees, Inc. All Rights Reserved Blue Ocean – Pipeline Build - KO

Slide 56

Slide 56 text

© 2016 CloudBees, Inc. All Rights Reserved Blue Ocean – Pipeline Build - OK

Slide 57

Slide 57 text

© 2016 CloudBees, Inc. All Rights Reserved Blue Ocean - Notifications

Slide 58

Slide 58 text

© 2016 CloudBees, Inc. All Rights Reserved Blue Ocean - Notifications

Slide 59

Slide 59 text

© 2016 CloudBees, Inc. All Rights Reserved Blue Ocean - Notifications

Slide 60

Slide 60 text

© 2016 CloudBees, Inc. All Rights Reserved Blue Ocean - Personalized view

Slide 61

Slide 61 text

© 2016 CloudBees, Inc. All Rights Reserved © 2016 CloudBees, Inc. All Rights Reserved Conclusion

Slide 62

Slide 62 text

© 2016 CloudBees, Inc. All Rights Reserved • Jenkins 2.0 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

Slide 63

Slide 63 text

© 2016 CloudBees, Inc. All Rights Reserved Try out Jenkins 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

Slide 64

Slide 64 text

© 2016 CloudBees, Inc. All Rights Reserved © 2016 CloudBees, Inc. All Rights Reserved Questions and (perhaps) Answers

Slide 65

Slide 65 text

© 2016 CloudBees, Inc. All Rights Reserved • Jenkins project – Website: https://jenkins.io – GitHub: https://github.com/jenkinsci/ • Demo – Samples: https://github.com/jenkins-demo • CloudBees – Website: https://www.cloudbees.com – CloudBees Jenkins Platform o https://www.cloudbees.com/products/cloudbees-jenkins- platform Useful links 65

Slide 66

Slide 66 text

© 2016 CloudBees, Inc. All Rights Reserved Greatings • Thanks to R. Tyler Croy, Oleg Nenashev, James Dumay for all the inputs to create this presentation 66

Slide 67

Slide 67 text

© 2016 CloudBees, Inc. All Rights Reserved © 2016 CloudBees, Inc. All Rights Reserved 67