Slide 1

Slide 1 text

© 2016 CloudBees, Inc. All Rights Reserved © 2016 CloudBees, Inc. All Rights Reserved Jenkins 2.0

Slide 2

Slide 2 text

© 2016 CloudBees, Inc. All Rights Reserved About Jenkins An extensible automation server built on the JVM with hundreds of plugins to support nearly every continuous integration, delivery and deployment pipeline imaginable 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, 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

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.0? • What is Jenkins 2.0? • Road beyond 2.0… 7

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

© 2016 CloudBees, Inc. All Rights Reserved © 2016 CloudBees, Inc. All Rights Reserved Meet Jenkins 1.x 9

Slide 10

Slide 10 text

© 2016 CloudBees, Inc. All Rights Reserved Easy to download • wget mirrors.jenkins-ci.org/war/latest/jenkins.war • java -jar jenkins.war • Open up http://localhost:8080 10

Slide 11

Slide 11 text

© 2016 CloudBees, Inc. All Rights Reserved Then what 11

Slide 12

Slide 12 text

© 2016 CloudBees, Inc. All Rights Reserved Helpful pre-installed plugins • CVS • Subversion • Ant • Maven • JUnit • Javadoc • LDAP • OWASP Markup Formatter • PAM Authentication • Translation Assistance • Windows/SSH Agent 12

Slide 13

Slide 13 text

© 2016 CloudBees, Inc. All Rights Reserved Build and release some software 13

Slide 14

Slide 14 text

© 2016 CloudBees, Inc. All Rights Reserved Pipelines in Jenkins 1.x • Create jobs • Trigger “downstream” jobs for next stage • Easy! 14

Slide 15

Slide 15 text

© 2016 CloudBees, Inc. All Rights Reserved Pipelines in Jenkins 1.x 15

Slide 16

Slide 16 text

© 2016 CloudBees, Inc. All Rights Reserved Pipelines in Jenkins 1.x 16

Slide 17

Slide 17 text

© 2016 CloudBees, Inc. All Rights Reserved Pipelines in Jenkins 1.x 17

Slide 18

Slide 18 text

© 2016 CloudBees, Inc. All Rights Reserved Pipelines in Jenkins 1.x 18

Slide 19

Slide 19 text

© 2016 CloudBees, Inc. All Rights Reserved Pipelines in Jenkins 1.x 19

Slide 20

Slide 20 text

© 2016 CloudBees, Inc. All Rights Reserved Pipelines in Jenkins 1.x 20

Slide 21

Slide 21 text

© 2016 CloudBees, Inc. All Rights Reserved Easy! 21

Slide 22

Slide 22 text

© 2016 CloudBees, Inc. All Rights Reserved Classic Job Configuration UI • All the options you could ever want – and more! • Consistent for almost a decade 22

Slide 23

Slide 23 text

© 2016 CloudBees, Inc. All Rights Reserved Low maintenance • Many users install Jenkins once • Usage pattern: “set it, and forget it!” 23

Slide 24

Slide 24 text

© 2016 CloudBees, Inc. All Rights Reserved © 2016 CloudBees, Inc. All Rights Reserved So…why Jenkins 2.0? 24

Slide 25

Slide 25 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.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 ...

Slide 26

Slide 26 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. 26

Slide 27

Slide 27 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 !! 27

Slide 28

Slide 28 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? 28

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

© 2016 CloudBees, Inc. All Rights Reserved © 2016 CloudBees, Inc. All Rights Reserved Meet Jenkins 2.0 jenkins-ci.org/2.0

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

© 2016 CloudBees, Inc. All Rights Reserved Pipeline sample node('docker') { checkout scm /* Grab the abbreviated SHA1 of our pipeline’s commit. */ sh 'git rev-parse HEAD > GIT_COMMIT' def shortCommit = readFile('GIT_COMMIT').take(6) stage 'Build' def image = docker.build("jenkinsciinfra/bind:build- ${shortCommit}") stage 'Deploy' image.push() } 35 github.com/jenkinsci/pipeline-examples

Slide 36

Slide 36 text

© 2016 CloudBees, Inc. All Rights Reserved Jenkinsfile 36

Slide 37

Slide 37 text

© 2016 CloudBees, Inc. All Rights Reserved Pipeline DSL 37

Slide 38

Slide 38 text

© 2016 CloudBees, Inc. All Rights Reserved Pipeline Stage View sample 38

Slide 39

Slide 39 text

© 2016 CloudBees, Inc. All Rights Reserved Pipeline Stage View sample 39

Slide 40

Slide 40 text

© 2016 CloudBees, Inc. All Rights Reserved Pipeline Stage View sample 40

Slide 41

Slide 41 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 – [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

Slide 42

Slide 42 text

© 2016 CloudBees, Inc. All Rights Reserved GitHub multibranch 42

Slide 43

Slide 43 text

© 2016 CloudBees, Inc. All Rights Reserved GitHub multibranch 43

Slide 44

Slide 44 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… 44

Slide 45

Slide 45 text

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

Slide 46

Slide 46 text

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

Slide 47

Slide 47 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. 47

Slide 48

Slide 48 text

© 2016 CloudBees, Inc. All Rights Reserved Security - Unlock jenkins 48

Slide 49

Slide 49 text

© 2016 CloudBees, Inc. All Rights Reserved Plugins installation wizard 49

Slide 50

Slide 50 text

© 2016 CloudBees, Inc. All Rights Reserved Plugins installation wizard 50

Slide 51

Slide 51 text

© 2016 CloudBees, Inc. All Rights Reserved Plugins installation wizard 51

Slide 52

Slide 52 text

© 2016 CloudBees, Inc. All Rights Reserved Security – Create 1st administrator account 52

Slide 53

Slide 53 text

© 2016 CloudBees, Inc. All Rights Reserved Let’s go 53

Slide 54

Slide 54 text

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

Slide 55

Slide 55 text

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

Slide 56

Slide 56 text

© 2016 CloudBees, Inc. All Rights Reserved New item page 56

Slide 57

Slide 57 text

© 2016 CloudBees, Inc. All Rights Reserved New configuration tabs 57

Slide 58

Slide 58 text

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

Slide 59

Slide 59 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? 59 59

Slide 60

Slide 60 text

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

Slide 61

Slide 61 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. • SOON: The Jenkins definitive guide, a real browsable end- user documentation 61

Slide 62

Slide 62 text

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

Slide 63

Slide 63 text

© 2016 CloudBees, Inc. All Rights Reserved http://jenkins.io 63

Slide 64

Slide 64 text

© 2016 CloudBees, Inc. All Rights Reserved © 2016 CloudBees, Inc. All Rights Reserved 2.0 Timeline / Roadmap 64

Slide 65

Slide 65 text

© 2016 CloudBees, Inc. All Rights Reserved 65

Slide 66

Slide 66 text

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

Slide 67

Slide 67 text

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

Slide 68

Slide 68 text

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

Slide 69

Slide 69 text

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

Slide 70

Slide 70 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 70 https://wiki.jenkins-ci.org/display/JENKINS/Jenkins+2.0

Slide 71

Slide 71 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 71

Slide 72

Slide 72 text

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

Slide 73

Slide 73 text

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

Slide 74

Slide 74 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 74

Slide 75

Slide 75 text

© 2016 CloudBees, Inc. All Rights Reserved Continuous Delivery • Grow dataset of available Application/Environment information • Close the feedback loop from “production” with monitoring/alerting tooling 75

Slide 76

Slide 76 text

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

Slide 77

Slide 77 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) 77

Slide 78

Slide 78 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 – ? 78

Slide 79

Slide 79 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 79

Slide 80

Slide 80 text

© 2016 CloudBees, Inc. All Rights Reserved © 2016 CloudBees, Inc. All Rights Reserved User Experience #ItsABigBlueOcean 80

Slide 81

Slide 81 text

© 2016 CloudBees, Inc. All Rights Reserved Plugin Manager updates! 81

Slide 82

Slide 82 text

© 2016 CloudBees, Inc. All Rights Reserved More and more UI improvements 82

Slide 83

Slide 83 text

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

Slide 84

Slide 84 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...) • 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

Slide 85

Slide 85 text

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

Slide 86

Slide 86 text

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

Slide 87

Slide 87 text

© 2016 CloudBees, Inc. All Rights Reserved © 2016 CloudBees, Inc. All Rights Reserved Demo If I was crazy fast !!!!

Slide 88

Slide 88 text

© 2016 CloudBees, Inc. All Rights Reserved Useful links •Jenkins project – Website: http://jenkins-ci.org – GitHub: https://github.com/jenkinsci/ •CloudBees – Website: https://www.cloudbees.com – CloudBees Jenkins Platform o https://www.cloudbees.com/products/cloudbees-jenkins- platform 88

Slide 89

Slide 89 text

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

Slide 90

Slide 90 text

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