SlideShare a Scribd company logo
14.11.2018
Roman Pickl
Continuous Delivery with Jenkins
Pipelines (incl. Advanced Topics)
2© Elektrobit (EB) 2018 2
1. docker run -p 8080:8080 jenkinsci/blueocean (add –p 44444:44444 or any other port to try
the ssh linter)
2. Go to http://localhost:8080/
3. Unlock jenkins with initialpw from log file
4. Install suggested plugins (you may have to continue the process in case any plugins are
broken and update plugins later on)
5. Create admin user / or continue with admin and initalpw
6. Open http://localhost:8080/blue/pipelines
7. Generate new Pipeline with Github repository
8. Create Jenkinsfile (e.g. https://github.com/rompic/jenkinspipeline)
Demo
Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
3© Elektrobit (EB) 2018
• Technical Project Manager @ Elektrobit
• Uses Jenkins since 2012
• Loves CI/CD/DevOps
• Here to learn
Roman Pickl (@rompic)
How did I end up here?
Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
4© Elektrobit (EB) 2018
Jez Humble on Continuous Delivery(2012): https://www.youtube.com/watch?v=skLJuksCRTw
Automated implementation of your system’s build, deploy, test,
release process
• Every change results in a build
• Every build is a release candidate
• Delivery can be done at any time, on any environment
 Make releases a non-event
Deployment Pipeline provides:
• Visibility
• Feedback
• Control
Continuous Delivery (CD)
Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
Read these books
if you want to
know more!
5© Elektrobit (EB) 2018
Jez Humble D. F., Continuous Delivery: Reliable Software Releases Through Build, Test, and Deployment Automation (2010)
Deployment Pipelines (Let’s build it with jenkins)
Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
6© Elektrobit (EB) 2018
http://dduportal.github.io/presentations/mixit-2017-jenkins-pipeline/slides.html#/meet_jenkins
https://jenkins.io/blog/2017/04/05/say-hello-blueocean-1-0/
http://stats.jenkins.io/
• Created by Kohsuke Kawaguchi
• Initial Release 2005 (Hudson)
• Open Source (MIT License)
• Active and independent community (https://jenkins.io)
• 178,800 active installations
• 1,600+ plugins (!)
• Since 2.0 Pipelines (April 2016) are first class citizens
• Pipeline as Code (Jenkinsfile).
• New User Experience “Blue Ocean” with Blue Ocean Pipeline Editor
• Blue Ocean 1.9 released in October 2018
#1 Continuous Integration and Delivery Server
Jenkins
Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
7© Elektrobit (EB) 2018
Welcome Blue Ocean!
Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
8© Elektrobit (EB) 2018
4.Choose a repository
3. Choose organization
2. Provide access key
1. Type of source control
Create a Pipeline Wizard
Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
9© Elektrobit (EB) 2018
https://jenkins.io/doc/book/pipeline/jenkinsfile/
Written in a Groovy DSL
“Jenkinsfile” in top level folder (different path possible since June
2017 https://issues.jenkins-ci.org/browse/JENKINS-34561)
Store in SCM (e.g. GIT) for additional benefits
• Code review/iteration
• Audit trail
• Single source of truth
Supports two syntaxes (can be mixed)
• Declarative pipelines (easier; “new”; 1.0 Feb 2017)
• Scripted pipelines (more powerful)
Jenkinsfile
Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
10© Elektrobit (EB) 2018
https://jenkins.io/doc/book/pipeline/syntax/
Declarative PipelineScripted Pipelines
Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
Scripted vs. Declarative
11© Elektrobit (EB) 2018
https://jenkins.io/doc/book/pipeline/syntax/
Declarative PipelineScripted Pipelines
Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
Scripted vs. Declarative
• imperative programming model
• fully featured programming environment,
• higher flexibility and extensibility
• very few limits
 for power-users and more complex requirements
• declarative programming model
• simpler and more opinionated syntax for authoring Jenkins
Pipeline.
• Allows for validation and a visual editor
• limits what is available to the user
 ideal choice for simpler continuous delivery pipelines
Both
• use Groovy
• same Pipeline sub-system underneath
• mostly use same steps
• able to utilize Shared Libraries
 can be mixed using the script step
See https://jenkins.io/blog/2017/01/19/converting-conditional-to-pipeline/ for a more complex example of migrating a freestyle job to a
declarative/scripted pipeline.
12© Elektrobit (EB) 2018
https://jenkins.io/doc/book/pipeline/syntax/
• takes a block of Scripted Pipeline & executes that in the
Declarative Pipeline
• can provide a useful "escape hatch".
• script blocks of non-trivial size and/or complexity should be
moved into Shared Libraries
script Step
Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
13© Elektrobit (EB) 2018
Settings
Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
14© Elektrobit (EB) 2018
Stages
Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
15© Elektrobit (EB) 2018
Parallel Execution
Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
Declarative 1.3 (released 14.06.2018) allows you to add multiple
“sequential” stages in the same parallel branch.
See https://www.cloudbees.com/blog/whats-new-declarative-pipeline-
13-sequential-stages
16© Elektrobit (EB) 2018
Approval
Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
Deploy to Live / Release omitted here
17© Elektrobit (EB) 2018
Post Build Notifications
Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
18© Elektrobit (EB) 2018 18
https://wiki.jenkins.io/display/JENKINS/Blue+Ocean+Plugin
• Latest additions
– Support for sequential parallel stages
– Restartable Stages for declarative pipelines
– Performance improvements
Public roadmap
• https://jenkins.io/projects/blueocean/roadmap/
Blue Ocean 1.9 released 10.10.2018
Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
19© Elektrobit (EB) 2018 19
Overview
Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
20© Elektrobit (EB) 2018 20
Approval
Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
21© Elektrobit (EB) 2018 21
Detail
Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
22© Elektrobit (EB) 2018 22
Multi branch support
Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
23© Elektrobit (EB) 2018 23
Multi branch (When)
Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
24© Elektrobit (EB) 2018
• GitLab currently not supported (planned! https://issues.jenkins-ci.org/browse/JENKINS-43976)
• Workaround: http://localhost:8080/blue/organizations/jenkins/pipeline-editor/
• Ctrl-S / Cmd-S to open the load save dialog
Pipeline Editor
Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
25© Elektrobit (EB) 2018 25© Elektrobit (EB) 2018 | Confidential
• Blue Ocean Pipeline Editor
• Snippet Generator
• Declarative Directive Generator
• Auto-Convert Freestyle Jobs to Jenkins Pipeline
• Replay Feature
• IntelliJ IDEA GDSL – Autocomplete
• Command-line Pipeline Linter
• Jenkins File Runner
• Shared Libraries
• Unit Testing Jenkins Pipelines
Pipeline Development and Advanced Tools
Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
26© Elektrobit (EB) 2018
• http://localhost:8080/pipeline-syntax
Snippet generator
Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
27© Elektrobit (EB) 2018
• http://localhost:8080/directive-generator/
• https://jenkins.io/blog/2018/04/09/whats-in-declarative/
Declarative Directive Generator
Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
28© Elektrobit (EB) 2018
Plugin to automatically convert Freestyle Jobs to Jenkins Pipeline
https://jenkins.io/blog/2017/12/15/auto-convert-freestyle-jenkins-jobs-to-coded-pipeline/
https://wiki.jenkins.io/display/JENKINS/Convert+To+Pipeline+Plugin
Auto-Convert Freestyle Jobs to Jenkins Pipeline
Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
29© Elektrobit (EB) 2018
• Allows for quick modifications and execution of an existing
(valid!) Pipeline without changing the Pipeline configuration or
creating a new commit.
• Once you are satisfied with the changes, you can use Replay to
view them again, copy them back to your Pipeline job or
Jenkinsfile, and then commit them using your usual engineering
processes
Replay Feature
Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
30© Elektrobit (EB) 2018
See
https://st-g.de/2016/08/jenkins-pipeline-autocompletion-in-intellij
https://stackoverflow.com/questions/41062514/use-gdsl-file-in-a-java-project-in-intellij
https://stackoverflow.com/a/41149255/3165782
for setting it up.
• Auto completion of steps for scripted pipelines
• Install Groovy Plugin
• Download http://localhost:8080/pipeline-syntax/gdsl
• Add it as e.g. pipeline.gdsl to your projects src path
IntelliJ IDEA GDSL - Autocomplete
Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
31© Elektrobit (EB) 2018
Validate Declarative Pipelines from the cli before actually running it/checking it in.
See https://jenkins.io/doc/book/pipeline/development/#linter for details. Remember to enable SSH access, expose a port on your
docker container and add ssh key to try this!
Command-line Pipeline Linter
Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
32© Elektrobit (EB) 2018
https://github.com/jenkinsci/jenkinsfile-runner
Experiment to package Jenkins pipeline execution as a command
line tool.
Use cases include:
• Assist editing and testing Jenkinsfile locally
• Use Jenkins in Function-as-a-Service context
• Integration test shared libraries
• downloads latest Jenkins LTS
• installs plugins as defined by a plugins.txt file
• setup .jenkinsfile-runner directory
• runs Jenkins master headless
• run a single job based on a local Jenkinsfile, then shutdown on
completion.
So i guess we can run now run a job in jenkins which downloads jenkins to run a jenkins job …
jenkinsfile-runner
Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
33© Elektrobit (EB) 2018
Share parts of Pipelines between various projects to reduce
redundancies and keep code "DRY“.
Functions can than be called from Jenkinsfiles.
See
https://jenkins.io/doc/book/pipeline/shared-libraries/
and
https://jenkins.io/blog/2017/10/02/pipeline-templates-with-
shared-libraries/
for more details.
Shared Libraries
Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
34© Elektrobit (EB) 2018 34© Elektrobit (EB) 2018 | Confidential
• Allows to unit test Pipelines and Shared Libraries before running them in full
• Provides a mock execution environment that can be used to check for expected behavior
• Still quite rough around the edges. (e.g. no support for declarative pipeline yet
https://github.com/lesfurets/JenkinsPipelineUnit/pull/13)
• See:
• https://github.com/lesfurets/JenkinsPipelineUnit
• https://github.com/lesfurets/JenkinsPipelineUnit/blob/master/README.md
• https://issues.jenkins-ci.org/browse/JENKINS-33925
• Other approaches https://github.com/homeaway/jenkins-spock
Unit Testing Jenkins Pipelines
Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
35© Elektrobit (EB) 2018
• Missing:
– Support for passing variables between stages in declarative pipelines (see workaround in https://issues.jenkins-ci.org/browse/JENKINS-41335 and
discussion in https://stackoverflow.com/questions/47462500/pass-variables-between-jenkins-stages and
https://stackoverflow.com/questions/43879733/jenkinsfile-declarative-pipeline-defining-dynamic-env-vars/43881731#43881731)
• To Come:
– More editor coverage of declaration syntax
– GitLab read/write support
– Jenkins Evergreen an automatically updating rolling distribution system for Jenkins - https://jenkins.io/projects/evergreen/
– For more see https://jenkins.io/projects/blueocean/roadmap/ and https://jenkins.io/blog/2018/08/31/shifting-gears/
Things missing / Things to come
Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
36© Elektrobit (EB) 2018
• Website: https://jenkins.io
• Blog: https://jenkins.io/node/
• https://www.slideshare.net/legrimpeur/belgium-jenkins-area-meetup-jenkins-blueocean-and-declarative-pipelines
• Getting Started
• https://jenkins.io/doc/book/getting-started/
• https://jenkins.io/doc/book/pipeline/syntax/
• https://jenkins.io/doc/tutorials/
• https://jenkins.io/doc/pipeline/steps/
• https://jenkins.io/doc/book/blueocean/getting-started/
• https://github.com/jenkinsci/pipeline-model-definition-plugin/wiki/getting%20started
• https://jenkins.io/blog/2017/05/18/pipeline-dev-tools/
Further references & information I
Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
37© Elektrobit (EB) 2018
Docker Files:
• https://github.com/jenkinsci/docker/blob/master/README.md
• https://hub.docker.com/r/jenkinsci/blueocean/
Further references & information II
Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
Roman Pickl (@rompic)
roman.pickl@elektrobit.com
www.elektrobit.com
Get in touch!

More Related Content

PDF
Continuous delivery with jenkins pipelines @devopsdays cairo
PDF
Continuous delivery with jenkins pipelines @ devdays
PPTX
Virtual Flink Forward 2020: Implement Reliable, Isolated & Unified Job Submis...
PDF
Codifying the Build and Release Process with a Jenkins Pipeline Shared Library
PPTX
Towards Flink 2.0: Unified Batch & Stream Processing - Aljoscha Krettek, Ver...
PPTX
Virtual Flink Forward 2020: Integrate Flink with Kubernetes natively - Yang Wang
PDF
Verify Your Kubernetes Clusters with Upstream e2e tests
DOC
Oracle soa 10g to 11g migration
Continuous delivery with jenkins pipelines @devopsdays cairo
Continuous delivery with jenkins pipelines @ devdays
Virtual Flink Forward 2020: Implement Reliable, Isolated & Unified Job Submis...
Codifying the Build and Release Process with a Jenkins Pipeline Shared Library
Towards Flink 2.0: Unified Batch & Stream Processing - Aljoscha Krettek, Ver...
Virtual Flink Forward 2020: Integrate Flink with Kubernetes natively - Yang Wang
Verify Your Kubernetes Clusters with Upstream e2e tests
Oracle soa 10g to 11g migration

What's hot (20)

PPT
Subversion workshop
PPTX
Jenkins pipeline as code
PDF
2017 jenkins world
PDF
Upgrading Oracle SOA Suite 10g to 11g (whitepaper)
PDF
CI/CD Pipeline as a Code using Jenkins 2
PPTX
Jenkins2 - Coding Continuous Delivery Pipelines
PPTX
Working with Git
ODP
Subversion User Guide
PPTX
PPT
Totalsvn Usage And Administration By Gopi
PPTX
Mavenized RCP
PPT
Introduction to Subversion and Google Project Hosting
PDF
Third-Party Software Library Reuse : From Adoption to Migration
PPT
Continuous Delivery Agiles 2014 Medellin
PDF
August OpenNTF Webinar - Git and GitHub Explained
PDF
Jenkins Declarative Pipelines 101
PPTX
Advanced Git: Functionality and Features
PPTX
Triple E class DevOps with Hudson, Maven, Kokki/Multiconf and PyDev
PPTX
Conflicting Advice on Git Usage Patterns & Their Implications
PDF
Version Control & Git
Subversion workshop
Jenkins pipeline as code
2017 jenkins world
Upgrading Oracle SOA Suite 10g to 11g (whitepaper)
CI/CD Pipeline as a Code using Jenkins 2
Jenkins2 - Coding Continuous Delivery Pipelines
Working with Git
Subversion User Guide
Totalsvn Usage And Administration By Gopi
Mavenized RCP
Introduction to Subversion and Google Project Hosting
Third-Party Software Library Reuse : From Adoption to Migration
Continuous Delivery Agiles 2014 Medellin
August OpenNTF Webinar - Git and GitHub Explained
Jenkins Declarative Pipelines 101
Advanced Git: Functionality and Features
Triple E class DevOps with Hudson, Maven, Kokki/Multiconf and PyDev
Conflicting Advice on Git Usage Patterns & Their Implications
Version Control & Git
Ad

Similar to Continuous delivery with jenkins pipelines @devops pro moscow (20)

PDF
Continuous delivery with jenkins pipelines (@devfest Vienna)
PDF
Implementing CI CD UiPath Using Jenkins Plugin
PPTX
Continuous Delivery with Jenkins
PDF
Continuous Integration using Jenkins with Python
PPTX
Basic Jenkins Guide.pptx
PPTX
SD DevOps Meet-up - Jenkins 2.0 and Pipeline-as-Code
PPTX
Modernize deployment pipeline
PDF
Jenkins Pipelines
PPTX
Pipeline as code - new feature in Jenkins 2
PPTX
Kubernetes 1.16 and rancher 2.3 enhancements
PPTX
Continous Integration.pptx
PDF
An Open-Source Chef Cookbook CI/CD Implementation Using Jenkins Pipelines
PDF
The Latest Status of CE Workgroup Shared Embedded Linux Distribution Project
PDF
Continuous Delivery on Kubernetes Using Spinnaker
PDF
Why so continuous
PPTX
Ordina Accelerator program 2019 - Jenkins blue ocean pipelines
PPTX
Jenkins as a Service - Code all the way down
PDF
Continuous Deployment of your Application @SpringOne
PPTX
Eclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/Hudson
PDF
Jenkins vs. AWS CodePipeline (AWS User Group Berlin)
Continuous delivery with jenkins pipelines (@devfest Vienna)
Implementing CI CD UiPath Using Jenkins Plugin
Continuous Delivery with Jenkins
Continuous Integration using Jenkins with Python
Basic Jenkins Guide.pptx
SD DevOps Meet-up - Jenkins 2.0 and Pipeline-as-Code
Modernize deployment pipeline
Jenkins Pipelines
Pipeline as code - new feature in Jenkins 2
Kubernetes 1.16 and rancher 2.3 enhancements
Continous Integration.pptx
An Open-Source Chef Cookbook CI/CD Implementation Using Jenkins Pipelines
The Latest Status of CE Workgroup Shared Embedded Linux Distribution Project
Continuous Delivery on Kubernetes Using Spinnaker
Why so continuous
Ordina Accelerator program 2019 - Jenkins blue ocean pipelines
Jenkins as a Service - Code all the way down
Continuous Deployment of your Application @SpringOne
Eclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/Hudson
Jenkins vs. AWS CodePipeline (AWS User Group Berlin)
Ad

More from Roman Pickl (8)

PDF
Are we really moving faster? How visualizing flow changed the way we work
PDF
Are we really moving faster? How visualizing flow changed the way we work
PDF
Are we really moving faster? How visualizing flow changed the way we work
PPTX
Are we really moving faster? How visualizing flow changed the way we work - ...
PDF
Continuous Code Quality with the Sonar Ecosystem @GeeCON 2017 in Prague
PDF
Continuous delivery with jenkins pipelines incl. dev tools (@ Vienna DevOps &...
PDF
Continuous delivery with jenkins pipelines (@WeAreDevelopers2017)
PPTX
Continuous Code Quality with the sonar ecosystem
Are we really moving faster? How visualizing flow changed the way we work
Are we really moving faster? How visualizing flow changed the way we work
Are we really moving faster? How visualizing flow changed the way we work
Are we really moving faster? How visualizing flow changed the way we work - ...
Continuous Code Quality with the Sonar Ecosystem @GeeCON 2017 in Prague
Continuous delivery with jenkins pipelines incl. dev tools (@ Vienna DevOps &...
Continuous delivery with jenkins pipelines (@WeAreDevelopers2017)
Continuous Code Quality with the sonar ecosystem

Recently uploaded (20)

PDF
medical staffing services at VALiNTRY
PPTX
history of c programming in notes for students .pptx
PPTX
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
PDF
PTS Company Brochure 2025 (1).pdf.......
PPTX
VVF-Customer-Presentation2025-Ver1.9.pptx
PDF
2025 Textile ERP Trends: SAP, Odoo & Oracle
PPTX
Reimagine Home Health with the Power of Agentic AI​
PDF
Navsoft: AI-Powered Business Solutions & Custom Software Development
PDF
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
PDF
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
PDF
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
PDF
Understanding Forklifts - TECH EHS Solution
PDF
Softaken Excel to vCard Converter Software.pdf
PDF
Odoo Companies in India – Driving Business Transformation.pdf
PDF
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
PDF
Digital Strategies for Manufacturing Companies
PDF
Design an Analysis of Algorithms I-SECS-1021-03
PPTX
L1 - Introduction to python Backend.pptx
PPTX
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
PPTX
ai tools demonstartion for schools and inter college
medical staffing services at VALiNTRY
history of c programming in notes for students .pptx
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
PTS Company Brochure 2025 (1).pdf.......
VVF-Customer-Presentation2025-Ver1.9.pptx
2025 Textile ERP Trends: SAP, Odoo & Oracle
Reimagine Home Health with the Power of Agentic AI​
Navsoft: AI-Powered Business Solutions & Custom Software Development
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
Understanding Forklifts - TECH EHS Solution
Softaken Excel to vCard Converter Software.pdf
Odoo Companies in India – Driving Business Transformation.pdf
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
Digital Strategies for Manufacturing Companies
Design an Analysis of Algorithms I-SECS-1021-03
L1 - Introduction to python Backend.pptx
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
ai tools demonstartion for schools and inter college

Continuous delivery with jenkins pipelines @devops pro moscow

  • 1. 14.11.2018 Roman Pickl Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
  • 2. 2© Elektrobit (EB) 2018 2 1. docker run -p 8080:8080 jenkinsci/blueocean (add –p 44444:44444 or any other port to try the ssh linter) 2. Go to http://localhost:8080/ 3. Unlock jenkins with initialpw from log file 4. Install suggested plugins (you may have to continue the process in case any plugins are broken and update plugins later on) 5. Create admin user / or continue with admin and initalpw 6. Open http://localhost:8080/blue/pipelines 7. Generate new Pipeline with Github repository 8. Create Jenkinsfile (e.g. https://github.com/rompic/jenkinspipeline) Demo Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
  • 3. 3© Elektrobit (EB) 2018 • Technical Project Manager @ Elektrobit • Uses Jenkins since 2012 • Loves CI/CD/DevOps • Here to learn Roman Pickl (@rompic) How did I end up here? Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
  • 4. 4© Elektrobit (EB) 2018 Jez Humble on Continuous Delivery(2012): https://www.youtube.com/watch?v=skLJuksCRTw Automated implementation of your system’s build, deploy, test, release process • Every change results in a build • Every build is a release candidate • Delivery can be done at any time, on any environment  Make releases a non-event Deployment Pipeline provides: • Visibility • Feedback • Control Continuous Delivery (CD) Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics) Read these books if you want to know more!
  • 5. 5© Elektrobit (EB) 2018 Jez Humble D. F., Continuous Delivery: Reliable Software Releases Through Build, Test, and Deployment Automation (2010) Deployment Pipelines (Let’s build it with jenkins) Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
  • 6. 6© Elektrobit (EB) 2018 http://dduportal.github.io/presentations/mixit-2017-jenkins-pipeline/slides.html#/meet_jenkins https://jenkins.io/blog/2017/04/05/say-hello-blueocean-1-0/ http://stats.jenkins.io/ • Created by Kohsuke Kawaguchi • Initial Release 2005 (Hudson) • Open Source (MIT License) • Active and independent community (https://jenkins.io) • 178,800 active installations • 1,600+ plugins (!) • Since 2.0 Pipelines (April 2016) are first class citizens • Pipeline as Code (Jenkinsfile). • New User Experience “Blue Ocean” with Blue Ocean Pipeline Editor • Blue Ocean 1.9 released in October 2018 #1 Continuous Integration and Delivery Server Jenkins Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
  • 7. 7© Elektrobit (EB) 2018 Welcome Blue Ocean! Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
  • 8. 8© Elektrobit (EB) 2018 4.Choose a repository 3. Choose organization 2. Provide access key 1. Type of source control Create a Pipeline Wizard Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
  • 9. 9© Elektrobit (EB) 2018 https://jenkins.io/doc/book/pipeline/jenkinsfile/ Written in a Groovy DSL “Jenkinsfile” in top level folder (different path possible since June 2017 https://issues.jenkins-ci.org/browse/JENKINS-34561) Store in SCM (e.g. GIT) for additional benefits • Code review/iteration • Audit trail • Single source of truth Supports two syntaxes (can be mixed) • Declarative pipelines (easier; “new”; 1.0 Feb 2017) • Scripted pipelines (more powerful) Jenkinsfile Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
  • 10. 10© Elektrobit (EB) 2018 https://jenkins.io/doc/book/pipeline/syntax/ Declarative PipelineScripted Pipelines Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics) Scripted vs. Declarative
  • 11. 11© Elektrobit (EB) 2018 https://jenkins.io/doc/book/pipeline/syntax/ Declarative PipelineScripted Pipelines Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics) Scripted vs. Declarative • imperative programming model • fully featured programming environment, • higher flexibility and extensibility • very few limits  for power-users and more complex requirements • declarative programming model • simpler and more opinionated syntax for authoring Jenkins Pipeline. • Allows for validation and a visual editor • limits what is available to the user  ideal choice for simpler continuous delivery pipelines Both • use Groovy • same Pipeline sub-system underneath • mostly use same steps • able to utilize Shared Libraries  can be mixed using the script step See https://jenkins.io/blog/2017/01/19/converting-conditional-to-pipeline/ for a more complex example of migrating a freestyle job to a declarative/scripted pipeline.
  • 12. 12© Elektrobit (EB) 2018 https://jenkins.io/doc/book/pipeline/syntax/ • takes a block of Scripted Pipeline & executes that in the Declarative Pipeline • can provide a useful "escape hatch". • script blocks of non-trivial size and/or complexity should be moved into Shared Libraries script Step Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
  • 13. 13© Elektrobit (EB) 2018 Settings Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
  • 14. 14© Elektrobit (EB) 2018 Stages Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
  • 15. 15© Elektrobit (EB) 2018 Parallel Execution Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics) Declarative 1.3 (released 14.06.2018) allows you to add multiple “sequential” stages in the same parallel branch. See https://www.cloudbees.com/blog/whats-new-declarative-pipeline- 13-sequential-stages
  • 16. 16© Elektrobit (EB) 2018 Approval Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics) Deploy to Live / Release omitted here
  • 17. 17© Elektrobit (EB) 2018 Post Build Notifications Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
  • 18. 18© Elektrobit (EB) 2018 18 https://wiki.jenkins.io/display/JENKINS/Blue+Ocean+Plugin • Latest additions – Support for sequential parallel stages – Restartable Stages for declarative pipelines – Performance improvements Public roadmap • https://jenkins.io/projects/blueocean/roadmap/ Blue Ocean 1.9 released 10.10.2018 Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
  • 19. 19© Elektrobit (EB) 2018 19 Overview Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
  • 20. 20© Elektrobit (EB) 2018 20 Approval Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
  • 21. 21© Elektrobit (EB) 2018 21 Detail Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
  • 22. 22© Elektrobit (EB) 2018 22 Multi branch support Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
  • 23. 23© Elektrobit (EB) 2018 23 Multi branch (When) Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
  • 24. 24© Elektrobit (EB) 2018 • GitLab currently not supported (planned! https://issues.jenkins-ci.org/browse/JENKINS-43976) • Workaround: http://localhost:8080/blue/organizations/jenkins/pipeline-editor/ • Ctrl-S / Cmd-S to open the load save dialog Pipeline Editor Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
  • 25. 25© Elektrobit (EB) 2018 25© Elektrobit (EB) 2018 | Confidential • Blue Ocean Pipeline Editor • Snippet Generator • Declarative Directive Generator • Auto-Convert Freestyle Jobs to Jenkins Pipeline • Replay Feature • IntelliJ IDEA GDSL – Autocomplete • Command-line Pipeline Linter • Jenkins File Runner • Shared Libraries • Unit Testing Jenkins Pipelines Pipeline Development and Advanced Tools Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
  • 26. 26© Elektrobit (EB) 2018 • http://localhost:8080/pipeline-syntax Snippet generator Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
  • 27. 27© Elektrobit (EB) 2018 • http://localhost:8080/directive-generator/ • https://jenkins.io/blog/2018/04/09/whats-in-declarative/ Declarative Directive Generator Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
  • 28. 28© Elektrobit (EB) 2018 Plugin to automatically convert Freestyle Jobs to Jenkins Pipeline https://jenkins.io/blog/2017/12/15/auto-convert-freestyle-jenkins-jobs-to-coded-pipeline/ https://wiki.jenkins.io/display/JENKINS/Convert+To+Pipeline+Plugin Auto-Convert Freestyle Jobs to Jenkins Pipeline Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
  • 29. 29© Elektrobit (EB) 2018 • Allows for quick modifications and execution of an existing (valid!) Pipeline without changing the Pipeline configuration or creating a new commit. • Once you are satisfied with the changes, you can use Replay to view them again, copy them back to your Pipeline job or Jenkinsfile, and then commit them using your usual engineering processes Replay Feature Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
  • 30. 30© Elektrobit (EB) 2018 See https://st-g.de/2016/08/jenkins-pipeline-autocompletion-in-intellij https://stackoverflow.com/questions/41062514/use-gdsl-file-in-a-java-project-in-intellij https://stackoverflow.com/a/41149255/3165782 for setting it up. • Auto completion of steps for scripted pipelines • Install Groovy Plugin • Download http://localhost:8080/pipeline-syntax/gdsl • Add it as e.g. pipeline.gdsl to your projects src path IntelliJ IDEA GDSL - Autocomplete Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
  • 31. 31© Elektrobit (EB) 2018 Validate Declarative Pipelines from the cli before actually running it/checking it in. See https://jenkins.io/doc/book/pipeline/development/#linter for details. Remember to enable SSH access, expose a port on your docker container and add ssh key to try this! Command-line Pipeline Linter Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
  • 32. 32© Elektrobit (EB) 2018 https://github.com/jenkinsci/jenkinsfile-runner Experiment to package Jenkins pipeline execution as a command line tool. Use cases include: • Assist editing and testing Jenkinsfile locally • Use Jenkins in Function-as-a-Service context • Integration test shared libraries • downloads latest Jenkins LTS • installs plugins as defined by a plugins.txt file • setup .jenkinsfile-runner directory • runs Jenkins master headless • run a single job based on a local Jenkinsfile, then shutdown on completion. So i guess we can run now run a job in jenkins which downloads jenkins to run a jenkins job … jenkinsfile-runner Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
  • 33. 33© Elektrobit (EB) 2018 Share parts of Pipelines between various projects to reduce redundancies and keep code "DRY“. Functions can than be called from Jenkinsfiles. See https://jenkins.io/doc/book/pipeline/shared-libraries/ and https://jenkins.io/blog/2017/10/02/pipeline-templates-with- shared-libraries/ for more details. Shared Libraries Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
  • 34. 34© Elektrobit (EB) 2018 34© Elektrobit (EB) 2018 | Confidential • Allows to unit test Pipelines and Shared Libraries before running them in full • Provides a mock execution environment that can be used to check for expected behavior • Still quite rough around the edges. (e.g. no support for declarative pipeline yet https://github.com/lesfurets/JenkinsPipelineUnit/pull/13) • See: • https://github.com/lesfurets/JenkinsPipelineUnit • https://github.com/lesfurets/JenkinsPipelineUnit/blob/master/README.md • https://issues.jenkins-ci.org/browse/JENKINS-33925 • Other approaches https://github.com/homeaway/jenkins-spock Unit Testing Jenkins Pipelines Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
  • 35. 35© Elektrobit (EB) 2018 • Missing: – Support for passing variables between stages in declarative pipelines (see workaround in https://issues.jenkins-ci.org/browse/JENKINS-41335 and discussion in https://stackoverflow.com/questions/47462500/pass-variables-between-jenkins-stages and https://stackoverflow.com/questions/43879733/jenkinsfile-declarative-pipeline-defining-dynamic-env-vars/43881731#43881731) • To Come: – More editor coverage of declaration syntax – GitLab read/write support – Jenkins Evergreen an automatically updating rolling distribution system for Jenkins - https://jenkins.io/projects/evergreen/ – For more see https://jenkins.io/projects/blueocean/roadmap/ and https://jenkins.io/blog/2018/08/31/shifting-gears/ Things missing / Things to come Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
  • 36. 36© Elektrobit (EB) 2018 • Website: https://jenkins.io • Blog: https://jenkins.io/node/ • https://www.slideshare.net/legrimpeur/belgium-jenkins-area-meetup-jenkins-blueocean-and-declarative-pipelines • Getting Started • https://jenkins.io/doc/book/getting-started/ • https://jenkins.io/doc/book/pipeline/syntax/ • https://jenkins.io/doc/tutorials/ • https://jenkins.io/doc/pipeline/steps/ • https://jenkins.io/doc/book/blueocean/getting-started/ • https://github.com/jenkinsci/pipeline-model-definition-plugin/wiki/getting%20started • https://jenkins.io/blog/2017/05/18/pipeline-dev-tools/ Further references & information I Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)
  • 37. 37© Elektrobit (EB) 2018 Docker Files: • https://github.com/jenkinsci/docker/blob/master/README.md • https://hub.docker.com/r/jenkinsci/blueocean/ Further references & information II Continuous Delivery with Jenkins Pipelines (incl. Advanced Topics)