Slide 1

Slide 1 text

© 2019 CloudBees, Inc. All Rights Reserved. Old Jenkins / New Jenkins Oleg Nenashev (@oleg_nenashev) Jenkins project / CloudBees Paris, Sep 23, 2019 1

Slide 2

Slide 2 text

© 2019 CloudBees, Inc. All Rights Reserved. > whoami 2 @oleg_nenashev oleg-nenashev • Based in Neuchatel, Switzerland • Principal SW Engineer, CloudBees • Jenkins core maintainer

Slide 3

Slide 3 text

© 2019 CloudBees, Inc. All Rights Reserved. > whoami -jenkins 3 @oleg_nenashev oleg-nenashev

Slide 4

Slide 4 text

© 2019 CloudBees, Inc. All Rights Reserved. DevOptics Software Delivery Visibility & Insights Core Unified Software Delivery & Governance CodeShip CI/CD as a Service Flow Adaptive Release Orchestration DevOps Excellence Jenkins CloudBees Jenkins Distribution CloudBees Jenkins X Distribution 24x7 Technical Support Assisted Updates Support Accelerator Training Customer Success Managers DevOps Consultants Rollout Feature Flag Management Continuous Delivery Products and Services

Slide 5

Slide 5 text

© 2019 CloudBees, Inc. All Rights Reserved. > whoami -cloudbees 5 ● CloudBees Jenkins Distribution ● CloudBees Jenkins Support ● Community (e.g. Java 11 support, Jenkinsfile Runner, JCasC) https://www.cloudbees.com

Slide 6

Slide 6 text

© 2019 CloudBees, Inc. All Rights Reserved. About you 6

Slide 7

Slide 7 text

© 2019 CloudBees, Inc. All Rights Reserved. Agenda ➢ Old Jenkins ➢ New Jenkins ➢ Jenkins #NEXT ? ➢ Q&A 7 Disclaimer: Opinions are mine, typos are mine

Slide 8

Slide 8 text

© 2019 CloudBees, Inc. All Rights Reserved. Disclaimer ❖ Opinions are mine, typos are mine ❖ See also: Jeremy Hartley at DW|JW US “Jenkins state of the Union” (2019) 8

Slide 9

Slide 9 text

© 2019 CloudBees, Inc. All Rights Reserved. 1. It’s a framework => flexible 2. It’s open source => customizable 3. More than 1600 plugins 4. Big community 5. Commercial support is available Who is Mr. Jenkins?

Slide 10

Slide 10 text

© 2019 CloudBees, Inc. All Rights Reserved. Jenkins Popularity 10 >250.000 active installations >1600 plugins ~500 committers this quarter ~2 new plugins every week ~40 plugin releases every week

Slide 11

Slide 11 text

© 2019 CloudBees, Inc. All Rights Reserved. Integrations 11 >1600 plugins Integrations with hundreds of tools Automation management Automation for any kind of tasks Code & Commit Build & Config Scan & Test Release Deploy

Slide 12

Slide 12 text

© 2019 CloudBees, Inc. All Rights Reserved. 2018 – Dev Ecosystem survey by JetBrains 12 https://www.jetbrains.com/research/devecosystem-2018/team-tools/

Slide 13

Slide 13 text

© 2019 CloudBees, Inc. All Rights Reserved. Jenkins – CI/CD server for software Do you agree? 13

Slide 14

Slide 14 text

© 2019 CloudBees, Inc. All Rights Reserved. Jenkins – CI/CD server for software 14

Slide 15

Slide 15 text

© 2019 CloudBees, Inc. All Rights Reserved. Jenkins – CI/CD server for software 15

Slide 16

Slide 16 text

© 2019 CloudBees, Inc. All Rights Reserved. Jenkins CI/CD? 16 Continuous Integration Continuous Delivery DevOps Accounting automation Home Automation CRON с WebUI

Slide 17

Slide 17 text

© 2019 CloudBees, Inc. All Rights Reserved. Jenkins – Automation Server Do you agree now? 17

Slide 18

Slide 18 text

© 2019 CloudBees, Inc. All Rights Reserved. 18 Image: https://www.dronetrest.com/t/diy-self-build-drones-or-ready-to-fly-rtf-drones/1414

Slide 19

Slide 19 text

© 2019 CloudBees, Inc. All Rights Reserved. 19 Expectation

Slide 20

Slide 20 text

© 2019 CloudBees, Inc. All Rights Reserved. 20 Expectation Reality

Slide 21

Slide 21 text

© 2019 CloudBees, Inc. All Rights Reserved. Система Docs Plugins Configs Infra- structure Samples Demos CI/CD System from Jenkins Infra- structure Infra- structure 21

Slide 22

Slide 22 text

© 2019 CloudBees, Inc. All Rights Reserved. Jenkins – Automation Framework/Engine Disclaimer: IMHO 22

Slide 23

Slide 23 text

© 2019 CloudBees, Inc. All Rights Reserved. 23

Slide 24

Slide 24 text

© 2019 CloudBees, Inc. All Rights Reserved. 24

Slide 25

Slide 25 text

© 2019 CloudBees, Inc. All Rights Reserved. It is hard to maintain Jenkins • Fine-tuning is needed • Maintenance is needed • Expertise is needed 25

Slide 26

Slide 26 text

© 2019 CloudBees, Inc. All Rights Reserved. Learning Curve 26 Scripts, CRON Plugins Advanced features, Custom setups

Slide 27

Slide 27 text

© 2019 CloudBees, Inc. All Rights Reserved. >10 years of compatibility 27 Hudson 2 plugins still work! BUT: • Architecture issues • Old libraries • Obsolete UI • Plugin compatibility issues • Regular Security-updates

Slide 28

Slide 28 text

© 2019 CloudBees, Inc. All Rights Reserved. Web UI… 28

Slide 29

Slide 29 text

© 2019 CloudBees, Inc. All Rights Reserved. Scalability 29 Jenkins master handles the most of the workload Jobs run on master, agents execute subtasks

Slide 30

Slide 30 text

© 2019 CloudBees, Inc. All Rights Reserved. Approach: Using “classic” Job types: Freestyle, Matrix, JobDSL, … Classic Approaches Keywords: • Script steps to run the logic • Custom Tools Plugin to manage tools • Throttle Concurrent Builds and Lockable Resources to dispatch access to hardware • Naginator Plugin to restart builds on-demand • Parameterized Trigger / Copy artifacts to parallelize tests and to collect results 30

Slide 31

Slide 31 text

© 2019 CloudBees, Inc. All Rights Reserved. Classic Approaches Spaghetti Automation • Many job dependencies • Difficult build flow tracking • Complex configurations • Duplication Expensive maintenance 31

Slide 32

Slide 32 text

© 2019 CloudBees, Inc. All Rights Reserved. Система Docs Plugins Configs Infra- structure Samples Demos Infra- structure Infra- structure 32 ? * without proper maintenance

Slide 33

Slide 33 text

© 2019 CloudBees, Inc. All Rights Reserved. Back to the Future… 2015? 2018? 33

Slide 34

Slide 34 text

© 2019 CloudBees, Inc. All Rights Reserved. https://digitalsavvy.com/elephant-in-the-room-2/ 34

Slide 35

Slide 35 text

© 2019 CloudBees, Inc. All Rights Reserved. What changed? Cloud SaaS Containers DevOps 35

Slide 36

Slide 36 text

© 2019 CloudBees, Inc. All Rights Reserved. JENKINS CHANGES! 36

Slide 37

Slide 37 text

© 2019 CloudBees, Inc. All Rights Reserved. 37 Jenkins in 2019 Config-as-Code Jenkins Pipeline Modern platforms Jenkins X

Slide 38

Slide 38 text

© 2019 CloudBees, Inc. All Rights Reserved. ✓ Store together with the project ✓ Modify together with the project ✓ Test together with the project Automation … as code? 38

Slide 39

Slide 39 text

© 2019 CloudBees, Inc. All Rights Reserved. Система Docs Plugins Configs Infra- structure Samples Demos Automation Framework … as code Infra- structure Infra- structure SCM Infrastructure as Code Configuration as Code Documentation as Code Pipeline Libraries Pipelines 39

Slide 40

Slide 40 text

© 2019 CloudBees, Inc. All Rights Reserved. Configuration as Code in Jenkins Job Configuration System Configuration 40

Slide 41

Slide 41 text

© 2019 CloudBees, Inc. All Rights Reserved. Configuration as Code in Jenkins Job Configuration System Configuration 41

Slide 42

Slide 42 text

© 2019 CloudBees, Inc. All Rights Reserved. Configuration as Code for jobs Job DSL Job Builder Plugin Jenkins Pipeline Offered by default in Jenkins 2.0 … Groovy YAML Groovy 42

Slide 43

Slide 43 text

© 2019 CloudBees, Inc. All Rights Reserved. Automation as Code 43 Job DSL Pipeline (бывш. Workflow) По-умолчанию предлагается в Jenkins 2.0 Jenkins Job Builder Groovy Groovy YAML Ещё несколько десятков плагинов…

Slide 44

Slide 44 text

© 2019 CloudBees, Inc. All Rights Reserved. Jenkins Pipeline 44 https://jenkins.io/doc/book/pipeline/

Slide 45

Slide 45 text

© 2019 CloudBees, Inc. All Rights Reserved. Jenkins Pipeline is a… Groovy DSL for automatic flow description ➢ Defined in SCM (Jenkinsfile) or in Job configuration ➢ Scripted or Declarative // Run on a node having the “my_fpga” label node("linux && ml509") { git url:"http://github.com/myorg/myproject.git" sh "make all" } http://bit.ly/pipeline-tutorial 45

Slide 46

Slide 46 text

© 2019 CloudBees, Inc. All Rights Reserved. Syntax sugar on the top of Pipeline • “pipeline { }” closure Common configuration sections • Easy to set up • More static checks • Less flexibility 46 Declarative Pipeline https://github.com/jenkinsci/pipeline-model- definition-plugin/wiki

Slide 47

Slide 47 text

© 2019 CloudBees, Inc. All Rights Reserved. 47 Example. Declarative Pipeline pipeline { agent label:"generic-linux" tools { maven "Maven 3.3.9" jdk "Oracle JDK 8u40" } stages { stage("build") { steps { sh 'mvn clean install -Dmaven.test.failure.ignore=true' } } } post { always { junit "path/to/xml" } failure { mail to:"[email protected]", subject:"FAILURE:${currentBuild.name}", …} } }

Slide 48

Slide 48 text

© 2019 CloudBees, Inc. All Rights Reserved. Jenkins Pipeline is a… Groovy DSL for automatic flow description Item type in Jenkins Pipeline Job Multi-Branch Pipeline Organization Folder • GitHub org • BitBucket* • … 48

Slide 49

Slide 49 text

© 2019 CloudBees, Inc. All Rights Reserved.

Slide 50

Slide 50 text

© 2019 CloudBees, Inc. All Rights Reserved. Jenkins Pipeline is a… Groovy DSL for automatic flow description Item type Pipeline as Code Ecosystem 50

Slide 51

Slide 51 text

© 2019 CloudBees, Inc. All Rights Reserved. Branch- Source, BlueOcean, ... 89 - explicit support 42 - Pipeline- specific Documentation Samples Development Tools Jenkins Pipeline Ecosystem Plugins: 51

Slide 52

Slide 52 text

© 2019 CloudBees, Inc. All Rights Reserved. Main features Independent from node/workspace Parallelization Stages Robustness 52

Slide 53

Slide 53 text

© 2019 CloudBees, Inc. All Rights Reserved. Pipeline Shared Libraries ➢ Libs are located in SCM ➢ Versioning ➢ Encapsulation ➢ Visibility scopes 53

Slide 54

Slide 54 text

© 2019 CloudBees, Inc. All Rights Reserved. Library usage 1. Take library components 54

Slide 55

Slide 55 text

© 2019 CloudBees, Inc. All Rights Reserved. Library usage 1. Take library components 2. Build your own bicycle Pipeline Add some glue! 55

Slide 56

Slide 56 text

© 2019 CloudBees, Inc. All Rights Reserved. More about Pipeline Features ● http://bit.ly/pipeline-docs ● http://bit.ly/pipeline-compatibility 56

Slide 57

Slide 57 text

© 2019 CloudBees, Inc. All Rights Reserved. Configuration as Code in Jenkins Job Configuration System Configuration 57

Slide 58

Slide 58 text

© 2019 CloudBees, Inc. All Rights Reserved. Jenkins Configuration… as Code External Tools Jenkins CLI and REST API python- jenkins jenkins- client (java) Configuration Management systems Puppet, Ansible, Chef Docker Solutions within Jenkins project Groovy Hooks Scriptler Plugin JCasC Plugin Just examples… 58

Slide 59

Slide 59 text

© 2019 CloudBees, Inc. All Rights Reserved. JCasC Plugin! Jenkins Configuration-as-Code Plugin https://plugins.jenkins.io/configuration-as-code 59

Slide 60

Slide 60 text

© 2019 CloudBees, Inc. All Rights Reserved. 60 JCasC Plugin ● Sub-project in Jenkins ● Feb 2018 - first alpha ● Sep 2018 - 1.0 ● Now - 1.8 ● Configuration via YAML jenkinsci/configuration-as-code-plugin

Slide 61

Slide 61 text

© 2019 CloudBees, Inc. All Rights Reserved. jenkins: systemMessage: "JCasC Demo" numExecutors: 1 scmCheckoutRetryCount: 4 mode: NORMAL securityRealm: local: allowsSignup: false users: - id: demoAdmin password: ${adminpw} jenkins.yaml 61

Slide 62

Slide 62 text

© 2019 CloudBees, Inc. All Rights Reserved. • YAML specification • Configuration export from Jenkins • CLI and REST API for configuration management • Pre-flight validations and dry-run • Support of many plugins out-of-the-box • [SOON] – JSON Schema for instances Features 62

Slide 63

Slide 63 text

© 2019 CloudBees, Inc. All Rights Reserved. https://github.com/oleg-nenashev/demo- jenkins-config-as-code/tree/casc-plugin 63 https://github.com/cloudbees-oss/cjd-jcasc-demo

Slide 64

Slide 64 text

© 2019 CloudBees, Inc. All Rights Reserved. Demo. Local Pipeline Development Env Intellij IDEA Filesystem SCM Plugin • Documentation, Syntax • Static analysis • Debug (only for hooks) Local Jenkins instance Source Code (local .git repos) • Configuration-as-Code • Same as production • Repos with libs • Jenkinsfile JENKINS_HOME (volume) 64

Slide 65

Slide 65 text

© 2019 CloudBees, Inc. All Rights Reserved. JCasC Limitations (temporary?) • Not all plugins are supported • YAML - No dynamic logic / scripting • Startup Chicken&Egg for plugins & jobs • Handling of removed sections • Export from UI – many open issues • No read-only admin access 65

Slide 66

Slide 66 text

© 2019 CloudBees, Inc. All Rights Reserved. Combining JCasC and Groovy hooks 66 JOBS_LOADED EXTENSIONS_AUGMENTED COMPLETED Groovy Hooks: init() JCasC PLUGINS_STARTED . . . Groovy hooks run after JCasC Hooks can fine-tune the configuration: • Missing integrations • Dynamic scripting • Job configurations and migrations Use JCasC where possible!

Slide 67

Slide 67 text

© 2019 CloudBees, Inc. All Rights Reserved. Comparison JCasC Plugin Groovy Hooks YAML – standard declarative definition Low barrier to entry Limited integrations Forward compatibility risks External rollback Apply changes w/o restart No debugging, YAGNI? Dry run mode + validation Export from UI CLI and REST API for CM Plugin management Groovy – general-purpose OOP language High barrier to entry Can manage everything Compatible if API is stable External rollback Restart is required Debugging support Plugin Management 67

Slide 68

Slide 68 text

© 2019 CloudBees, Inc. All Rights Reserved. © 2019 CloudBees, Inc. All Rights Reserved. Platforms 68

Slide 69

Slide 69 text

© 2019 CloudBees, Inc. All Rights Reserved. Platform SIG Started in Jul 2018 Platform support (OS, JVM) Installers Docker packaging https://jenkins.io/sigs/platform/ 69

Slide 70

Slide 70 text

© 2019 CloudBees, Inc. All Rights Reserved. Jenkins & Docker. Packaging https://hub.docker.com/r/jenkins/ 70

Slide 71

Slide 71 text

© 2019 CloudBees, Inc. All Rights Reserved. Jenkins & Docker. Plugins Docker Plugin Docker Pipeline Plugin Docker Custom Build Environment Plugin … Yet Another Docker Plugin Kubernetes Plugin Kubernetes Pipeline Plugin … 71

Slide 72

Slide 72 text

© 2019 CloudBees, Inc. All Rights Reserved. Example: Docker Pipeline Plugin https://plugins.jenkins.io/docker-workflow docker.image('onenashev/gcc-riscv:6.4-rc').inside { checkout scm sh "make clean test" } 72

Slide 73

Slide 73 text

© 2019 CloudBees, Inc. All Rights Reserved. Kubernetes ➢ Plugins (Kubernetes Plugin & Co) ➢ Helm charts ➢ Kubernetes operator 73

Slide 74

Slide 74 text

© 2019 CloudBees, Inc. All Rights Reserved. Example: Kubernetes Plugin def label = "gcc-riscv-${UUID.randomUUID().toString()}" podTemplate(name: 'test', label: label, containers: [ containerTemplate(name: 'gcc-riscv', image: 'onenashev/gcc-riscv:6.4-rc’, resourceRequestCpu: ‘2’, resourceLimitMemory: ‘8Gi' ttyEnabled: true, command: 'cat')]) { node(label) { checkout scm sh "make clean test" step([$class: 'TapPublisher', testResults: 'output/test/report.tap', ...]) } } https://plugins.jenkins.io/kubernetes 74

Slide 75

Slide 75 text

© 2019 CloudBees, Inc. All Rights Reserved. Cloud Providers Plugins for all major Cloud Providers Jenkins on [some] marketplaces 75

Slide 76

Slide 76 text

© 2019 CloudBees, Inc. All Rights Reserved. Not only about containers… 76

Slide 77

Slide 77 text

© 2019 CloudBees, Inc. All Rights Reserved. JVM Java 11 is fully supported in Jenkins 2.164+ Jenkins is a member of Quality Outreach Support beyond OpenJDK 77

Slide 78

Slide 78 text

© 2019 CloudBees, Inc. All Rights Reserved. 78 https://jenkins.io/blog/2019/03/11/let-s-celebrate-java-11-support/

Slide 79

Slide 79 text

© 2019 CloudBees, Inc. All Rights Reserved. © 2019 CloudBees, Inc. All Rights Reserved. Jenkins #NEXT 79

Slide 80

Slide 80 text

© 2019 CloudBees, Inc. All Rights Reserved. 80 Permanent agents On-demand agents from cloud providers Jenkins Master Web UI

Slide 81

Slide 81 text

© 2019 CloudBees, Inc. All Rights Reserved. Master as a SPoF Macroservice 81 Permanent agents On-demand agents from cloud providers Web UI Jenkins Master

Slide 82

Slide 82 text

© 2019 CloudBees, Inc. All Rights Reserved. Aug 31, 2018 – Kohsuke Kawaguchi, “Jenkins: Shifting Gears” https://jenkins.io/blog/2018/08/31/shifting-gears/ Slides: https://drive.google.com/file/d/160LjRKw42XXuXT2n4j8BLCzsSL5z2m2_/view 82

Slide 83

Slide 83 text

© 2019 CloudBees, Inc. All Rights Reserved. Shifting Gears: Our Amazing Success Extensible General Purpose Community 83 https://flic.kr/p/5FawSa

Slide 84

Slide 84 text

© 2019 CloudBees, Inc. All Rights Reserved. Shifting Gears: Making Changes 84

Slide 85

Slide 85 text

© 2019 CloudBees, Inc. All Rights Reserved. Cloud Native Jenkins “General purpose CI/CD engine that runs on Kubernetes and embraces fundamentally different architecture & extensibility mechanisms” 85 https://flic.kr/p/75ncBF Kohsuke Kawaguchi, 2018

Slide 86

Slide 86 text

© 2019 CloudBees, Inc. All Rights Reserved. ● Best service for each need ● Pay per use ● “Infinite” scaling ● Easy to use ● Easy to maintain ● Fast to develop 86 https://flic.kr/p/75ncBF Cloud Native Jenkins

Slide 87

Slide 87 text

© 2019 CloudBees, Inc. All Rights Reserved. Cloud Native Special Interest Group ● Founded in July 2018 ● https://jenkins.io/sigs/cloud-native ● https://gitter.im/jenkinsci/cloud-native-sig Goal: Improve Jenkins to run on Cloud environments as a "Cloud Native" application 87 ?

Slide 88

Slide 88 text

© 2019 CloudBees, Inc. All Rights Reserved. Jenkins X? 88

Slide 89

Slide 89 text

© 2019 CloudBees, Inc. All Rights Reserved. 89 https://jenkins-x.io

Slide 90

Slide 90 text

© 2019 CloudBees, Inc. All Rights Reserved. 90

Slide 91

Slide 91 text

© 2019 CloudBees, Inc. All Rights Reserved. Jenkins X. OOTB experience • Build packs • GitOps • Nexus, chartmuseum, monocular • Environments: Local, staging, production • IDE Integration • Jenkins X Pipelines 91

Slide 92

Slide 92 text

© 2019 CloudBees, Inc. All Rights Reserved. Jenkins X 1.x. Modes and engines 92 Static Masters Serverless build engines Jenkinsfile Runner Tekton Classic Jenkins

Slide 93

Slide 93 text

© 2019 CloudBees, Inc. All Rights Reserved. Jenkins X 2.x. Modes and engines 93 Static Masters Serverless build engines Jenkinsfile Runner Tekton (default in 2.0) Classic Jenkins @Deprecated

Slide 94

Slide 94 text

© 2019 CloudBees, Inc. All Rights Reserved. CommentOps - communication with users 94

Slide 95

Slide 95 text

© 2019 CloudBees, Inc. All Rights Reserved. 95 ● Cloud native ● K8s native ● Scalable ● AWESOME (c) Jenkins X 2.x is…

Slide 96

Slide 96 text

© 2019 CloudBees, Inc. All Rights Reserved. 96 ● Cloud native ● K8s native ● Scalable ● AWESOME (c) Universal ● GitHub-only ● GitOps-only ● Kubernetes-only ● … Jenkins X 2.x is… Jenkins X 2.x is NOT…

Slide 97

Slide 97 text

© 2019 CloudBees, Inc. All Rights Reserved. 97 ● Cloud native ● K8s native ● Scalable ● AWESOME (c) Universal ● GitHub-only ● GitOps-only ● Kubernetes-only ● … Jenkins X 2.x is… Jenkins X 2.x is NOT… Try out Jenkins X if it fits your environment OR if you plan to go all-in Kubernetes. Jenkins is still around for other cases

Slide 98

Slide 98 text

© 2019 CloudBees, Inc. All Rights Reserved. 98 Going Back?

Slide 99

Slide 99 text

© 2019 CloudBees, Inc. All Rights Reserved. Master as a SPoF Macroservice 99 Permanent agents On-demand agents from cloud providers Web UI Jenkins Master

Slide 100

Slide 100 text

© 2019 CloudBees, Inc. All Rights Reserved. (┛ಠ_ಠ)┛彡┻━┻ ● What if Jenkins master was “on- demand”? 100

Slide 101

Slide 101 text

© 2019 CloudBees, Inc. All Rights Reserved. Jenkinsfile Runner https://github.com/jenkinsci/jenkinsfile-runner Started by Kohsuke in Mar 2018 3 maintainers, 19 contributors Status: Beta (1.0-beta-8) 101

Slide 102

Slide 102 text

© 2019 CloudBees, Inc. All Rights Reserved. JFR TL;DR ● Binary and base Docker image ● Runs Pipeline and shuts down ● Runs everywhere https://github.com/jenkinsci/jenkinsfile-runner 102

Slide 103

Slide 103 text

© 2019 CloudBees, Inc. All Rights Reserved. Usage ● Pass workspace with project/Jenkinsfile ● Pass cache for local data (if needed) docker run --rm \ -v $(shell pwd)/Jenkinsfile:/workspace/Jenkinsfile \ jenkins4eval/jenkinsfile-runner 103

Slide 104

Slide 104 text

© 2019 CloudBees, Inc. All Rights Reserved. DEMO https://github.com/jenkinsci/jenkinsfile-runner/tree/master/demo/cwp 104

Slide 105

Slide 105 text

© 2019 CloudBees, Inc. All Rights Reserved. Demo. Our Jenkinsfile 105 docker run --rm \ -v $(shell pwd)/Jenkinsfile:/workspace/Jenkinsfile \ jenkins4eval/jenkinsfile-runner

Slide 106

Slide 106 text

© 2019 CloudBees, Inc. All Rights Reserved. 106

Slide 107

Slide 107 text

© 2019 CloudBees, Inc. All Rights Reserved. Features Startup in few seconds No-sandbox mode support Java 11 support Jenkinsfile Runner Test Framework jenkinsci/jenkinsfile-runner-test-framework 107

Slide 108

Slide 108 text

© 2019 CloudBees, Inc. All Rights Reserved. Jenkinsfile Runner is not a silver bullet! 108

Slide 109

Slide 109 text

© 2019 CloudBees, Inc. All Rights Reserved. Limitations Jenkinsfile Runner is not fully compatible ● No Web UI, no way to extract Jenkins reports ● No native support of external storage ● No build throttling, cross-master communication, etc. 109

Slide 110

Slide 110 text

© 2019 CloudBees, Inc. All Rights Reserved. Limitations Jenkinsfile Runner is not fully compatible ● No Web UI, no way to extract Jenkins reports ● No native support of external storage ● No build throttling, cross-master communication, etc. (?) Single container, single agent ● Docker and Kubernetes plugins need tweaks to produce sidecar containers ● Remoting 3.34 allows connection to headless masters ● https://github.com/jenkinsci/kubernetes-plugin/pull/602 110

Slide 111

Slide 111 text

© 2019 CloudBees, Inc. All Rights Reserved. Jenkinsfile Runner. Usage examples Jenkins X, Serverless mode (before Jenkins X 2.0 with Tekton) ● https://github.com/jenkins-x/jenkins-x-serverless ci.jenkins.io-runner ● https://github.com/jenkinsci/ci.jenkins.io-runner “FaaS” packaging ● GitHub Actions: https://github.com/jonico/jenkinsfile-runner-github-actions ● Codeship: https://github.com/oleg-nenashev/codeship-jenkinsfile ● AWS Lambda: https://github.com/carlossg/jenkinsfile-runner-lambda ● Project Fn: https://github.com/carlossg/jenkinsfile-runner-fn 111

Slide 112

Slide 112 text

© 2019 CloudBees, Inc. All Rights Reserved. “Packaging”? 112

Slide 113

Slide 113 text

© 2019 CloudBees, Inc. All Rights Reserved. Jenkinsfile Runner flavors 113 Vanilla: Docker/Binary in the official repo ● https://github.com/jenkinsci/jenkinsfile-runner ● https://hub.docker.com/r/jenkins4eval/jenkinsfile-runner

Slide 114

Slide 114 text

© 2019 CloudBees, Inc. All Rights Reserved. Jenkinsfile Runner flavors Vanilla: Docker/Binary in the official repo ● https://github.com/jenkinsci/jenkinsfile-runner ● https://hub.docker.com/r/jenkins4eval/jenkinsfile-runner Custom JFR packages ● https://jenkins.io/blog/2018/10/16/custom-war-packager/ ● Ready-to-fly Docker images with plugins and configs ● Way to go in 95% of cases 114

Slide 115

Slide 115 text

© 2019 CloudBees, Inc. All Rights Reserved. Building custom Jenkinsfile Runner images Custom WAR Packager Jenkinsfile Runner Core and Plugins Configuration-as-code Packaging Ready-to-fly Docker image Base image https://jenkins.io/blog/2018/10/16/custom-war-packager/ 115

Slide 116

Slide 116 text

© 2019 CloudBees, Inc. All Rights Reserved. Custom WAR Packager and Self-configuration 1. Custom WAR Packager is managed by a config YAML 2. Docker image: plugins.txt, Java flags, etc. 3. Groovy Init Scripts 4. AND: Configuration-as-Code Plugin https://plugins.jenkins.io/configuration-as-code Allows configuring Jenkins from YAML 116 https://github.com/jenkinsci/custom-war-packager

Slide 117

Slide 117 text

© 2019 CloudBees, Inc. All Rights Reserved. Jenkins X 2.x. Modes and engines 117 Static Masters Serverless build engines Jenkinsfile Runner Tekton (default in 2.0) Classic Jenkins @Deprecated

Slide 118

Slide 118 text

© 2019 CloudBees, Inc. All Rights Reserved. Jenkins X Serverless Build flow Single-shot masters build flow 118

Slide 119

Slide 119 text

© 2019 CloudBees, Inc. All Rights Reserved. https://medium.com/@jdrawlings/serverless- jenkins-with-jenkins-x-9134cbfe6870 Jenkinsfile Runner is Here 119 Jenkinsfile Runner

Slide 120

Slide 120 text

© 2019 CloudBees, Inc. All Rights Reserved. Jenkinsfiles on CodeShip? 120

Slide 121

Slide 121 text

© 2019 CloudBees, Inc. All Rights Reserved. Jenkinsfile Runner on CloudBees CodeShip ● Jenkins has no good SaaS ● CodeShip Pro - CI SaaS with native Docker support ● Free tiers for open-source projects ● What if we run Jenkins there? 121 https://codeship.com/features/pro

Slide 122

Slide 122 text

© 2019 CloudBees, Inc. All Rights Reserved. Demo 1 122 codeship-steps.yml codeship-services.yml Jenkinsfile https://github.com/oleg-nenashev/codeship-jenkinsfile

Slide 123

Slide 123 text

© 2019 CloudBees, Inc. All Rights Reserved. 123

Slide 124

Slide 124 text

© 2019 CloudBees, Inc. All Rights Reserved. Example 2. Building a Jenkins plugin in CodeShip https://github.com/oleg-nenashev/mailer-plugin/tree/codeship-demo ● Using ci.jenkins.io-runner ○ https://github.com/jenkinsci/ci.jenkins.io-runner ● Using the standard Jenkins Pipeline library ○ https://github.com/jenkins-infra/pipeline-library ● Using standard Jenkinsfile ○ buildPlugin() 124

Slide 125

Slide 125 text

© 2019 CloudBees, Inc. All Rights Reserved. Example 2. Building a Jenkins plugin in CodeShip codeship-services.yml codeship-steps.yml 125 Jenkinsfile

Slide 126

Slide 126 text

© 2019 CloudBees, Inc. All Rights Reserved. 126

Slide 127

Slide 127 text

© 2019 CloudBees, Inc. All Rights Reserved. CodeShip. Build history 127

Slide 128

Slide 128 text

© 2019 CloudBees, Inc. All Rights Reserved. 128 !=

Slide 129

Slide 129 text

© 2019 CloudBees, Inc. All Rights Reserved. Takeaways ○ Jenkins != CRON with WEB UI ○ Jenkins in 2019 – Jenkins in 2012 ○ Jenkins evolves ○ Cool projects are underway 129

Slide 130

Slide 130 text

© 2019 CloudBees, Inc. All Rights Reserved. What to try? ○ Jenkins Pipeline ○ Configuration-as-Code Plugin ○ Jenkins X if you do CD in K8s ○ Jenkinsfile Runner 130

Slide 131

Slide 131 text

© 2019 CloudBees, Inc. All Rights Reserved. 131

Slide 132

Slide 132 text

© 2019 CloudBees, Inc. All Rights Reserved. My wishlist Better tools for plugin maintainers and contributors Cloud Native Jenkins ➢ Pluggable storage ➢ Jenkinsfile Runner ➢ Jenkinsfile Runner Jenkins Plugin ➢ Everything-as-code Modern UX/UI ➢ New framework for developers (JS-based) ➢ REST API / GraphQL 132

Slide 133

Slide 133 text

© 2019 CloudBees, Inc. All Rights Reserved. What is your Jenkins story? 133

Slide 134

Slide 134 text

© 2019 CloudBees, Inc. All Rights Reserved. © 2019 CloudBees, Inc. All Rights Reserved. Jenkins does not go alone 134

Slide 135

Slide 135 text

A neutral home for the next generation of continuous delivery collaboration

Slide 136

Slide 136 text

© 2019 CloudBees, Inc. All Rights Reserved. CDF Members 136 PREMIER GENERAL AND END USER MEMBERS

Slide 137

Slide 137 text

© 2019 CloudBees, Inc. All Rights Reserved. Linux Foundation is not just about Linux... 137 Automotive Networking Cloud Security Blockchain Web Embedded

Slide 138

Slide 138 text

© 2019 CloudBees, Inc. All Rights Reserved. CDF Mission ● CDF believes in the power of Continuous Delivery to empower developers and teams and to produce high quality software more rapidly ● CDF believes in the open-source solutions collectively addressing the whole Software Delivery LifeCycle ● CDF fosters and sustains the ecosystem of open-source, vendor neutral projects through collaborations and interoperability ● CDF advocates this idea and encourages collaborations among practitioners to share and improve their practices 138

Slide 139

Slide 139 text

© 2019 CloudBees, Inc. All Rights Reserved. Projects in CDF ● Jenkins: https://github.com/jenkinsci ● Jenkins-X: https://github.com/jenkins-x ● Spinnaker: https://github.com/spinnaker ● Tekton: https://github.com/tektoncd 139

Slide 140

Slide 140 text

© 2019 CloudBees, Inc. All Rights Reserved. 2019 Jenkins Board and Officer elections ● 3 => 5 board members ● All officers to be reelected: Release, Security, Infrastructure, Events, Documentation (NEW) ● Oct 4 – Nominations close ● Oct 14-27 - Voting ● Nov 4 – Results 140 https://groups.google.com/forum/#!msg/jenkinsci- dev/vKi9JpxTQxY/2KgDsKUeAQAJ

Slide 141

Slide 141 text

© 2019 CloudBees, Inc. All Rights Reserved. It’s a great time to contribute ;) https://jenkins.io/participate Jenkins needs you! 141

Slide 142

Slide 142 text

© 2019 CloudBees, Inc. All Rights Reserved. Join special interest groups (SIGs) Let us know about your pain-points Share your stories and experiences ➢ jenkins.io/blog and other blogs ➢ Meetups ➢ Jenkins DEV list Contribution is not just Code Jenkins needs you! 142

Slide 143

Slide 143 text

© 2019 CloudBees, Inc. All Rights Reserved. 143 https://jenkins.io/events/hacktoberfest/

Slide 144

Slide 144 text

© 2019 CloudBees, Inc. All Rights Reserved. Contacts: E-mail: [email protected] GitHub: oleg-nenashev Twitter: @oleg_nenashev QUESTIONS? go.cloudbees.com 144