SlideShare a Scribd company logo
1 of 98
Jadson Santos
Software Engineer
CONTINUOUS
DELIVERY
Continuous Integration
• Continuous Integration is a software development practice where
members of a team integrate their work frequently, usually each person
integrates at least daily - leading to multiple integrations per day. Each
integration is verified by an automated build (including test) to detect
integration errors as quickly as possible. Many teams find that this
approach leads to significantly reduced integration problems and allows
a team to develop cohesive software more rapidly. This article is a quick
overview of Continuous Integration summarizing the technique and its
current usage.
27/11/2020 Continuous Delivery 2
Continuous Delivery and Deployment
• Continuous Delivery is a software development discipline where you
build software in such a way that the software can be released to
production at any time.
• Continuous Delivery is sometimes confused with Continuous
Deployment. Continuous Deployment means that every change goes
through the pipeline and automatically gets put into production, resulting
in many production deployments every day. Continuous Delivery just
means that you are able to do frequent deployments but may choose
not to do it, usually due to businesses preferring a slower rate of
deployment. In order to do Continuous Deployment you must be doing
Continuous Delivery.
27/11/2020 Continuous Delivery 3
Jenkins
Continuous Integration Server
27/11/2020 Continuous Delivery 4
Jenkins Introduction
• Jenkins an open source automation server which enables
developers around the world to reliably build, test, and
deploy their software.
• Jenkins works with the Job concept.
• A job is an execution that is created when an event is triggered. Be
it a commit, a period of time or even manually by the developer.
27/11/2020 Continuous Delivery 5
root
12345678
Jenkins Introduction
• Simple Job
27/11/2020 Continuous Delivery 6
Jenkins Introduction
• Configuring the Repository
• As example, let’s use a Github repository
27/11/2020 Continuous Delivery 7
REPOSITORY: All source files — executable code, configuration, host
environment, and data — are committed to a version control repositor (P. M.
Duvall DZone refcard #145).
Jenkins Introduction
• Credentials
• We created a pair of RSA keys, put the public on github and the
private on Jenkins
27/11/2020 Continuous Delivery 8
Jenkins Introduction
• Scheduling
• Every 1 hour, when there is a change in the repository (a new
commit)
27/11/2020 Continuous Delivery 9
CONTINUOUS INTEGRATION: Building and testing software with every change
committed to a project’s version control repositor (P. M. Duvall DZone refcard
#145).
Jenkins Introduction
• Build Step
27/11/2020 Continuous Delivery 10
INDEPENDENT BUILD: Write build scripts that are decoupled from IDEs.
These build scripts are executed by a CI system so that software is built at every
change (P. M. Duvall DZone refcard #145).
BUILD AND DEPLOYMENT SCRIPTING : Centralize all dependent libraries to
reduce bloat, class path problems, and repetition of the same dependent libraries
and transitive dependencies from project to project. (P. M. Duvall DZone refcard
#145).
Jenkins Introduction
• Pos-Build Actions
27/11/2020 Continuous Delivery 11
AUTOMATE TESTS: Automate the verification and validation of software to
include unit, component, capacity, functional, and deployment tests (P. M. Duvall
DZone refcard #145).
Jenkins Introduction
• Pos-Build Actions
27/11/2020 Continuous Delivery 12
CONTINUOUS FEEDBACK: Send automated feedback from CI system to all
cross-functional team members (P. M. Duvall DZone refcard #145).
Jenkins Introduction
• Build Log
27/11/2020 Continuous Delivery 13
Jenkins Introduction
• Build Configuration
27/11/2020 Continuous Delivery 14
Jenkins Introduction
• Build DashBoard
27/11/2020 Continuous Delivery 15
VISIBLE DASHBOARDS : Provide large visible displays that aggregate information
from your delivery system to provide high quality feedback to the Cross-Functional
Team in real time. (P. M. Duvall DZone refcard #145).
Jenkins Introduction
• Jenkins Configuration
27/11/2020 Continuous Delivery 16
Jenkins Introduction
• Jenkins Configuration
• Manage Plugins
27/11/2020 Continuous Delivery 17
Jenkins Introduction
• Jenkins Configuration
• System Configuration
27/11/2020 Continuous Delivery 18
Jenkins Introduction
• Jenkins Configuration
• Global Tools Configuration
27/11/2020 Continuous Delivery 19
Jenkins Introduction
• Jenkins Configuration (Making the dashboard public)
• Configure Global Security
• Choose "Role-Based Strategy" in the "Authorization" section
27/11/2020 Continuous Delivery 20
Jenkins Introduction
• Jenkins Configuration (Making the dashboard public)
• Manage and Assign Roles -> Manage Roles
• Create a new “public” role and give permission just to read: Overall,
Jobs and View.
27/11/2020 Continuous Delivery 21
Jenkins Introduction
• Jenkins Configuration (Making the dashboard public)
• Manage and Assign Roles -> Assign Roles
• Assing “public” role to “Anonymous” user
27/11/2020 Continuous Delivery 22
Jenkins Introduction
• Jenkins Configuration (Making the dashboard public)
• Now “Anonymous” users (without login) can view the dashboard
27/11/2020 Continuous Delivery 23
Pipeline
27/11/2020 Continuous Delivery 24
DEPLOYMENT PIPELINE: A deployment pipeline is an automated implementation
of your application’s build, test, deploy, and release process. (P. M. Duvall DZone
refcard #145).
Continuous Delivery Pipeline
• Pipeline is a concept to avoid waste in the software
development process and is used to provide quick
feedback to the team during the deployment process.
28/09/16 Continuous Delivery 25
Continuous Delivery Pipeline
• How does it works?
• The software deployment is divided into different
stages, where the tasks (jobs) are performed in each
of these stages. At the same stage, tasks can be
performed in parallel, to assist in the feedback loop.
When all tasks in one stage are approved, tasks in
the next stages can begin.
28/09/16 Continuous Delivery 26
Continuous Delivery Pipeline
• Jenkins has some Pipeline Plugins
• We will demonstrated 3 Jenkins plugins:
• Pipeline Plugin
• Build Pipeline Plugin
• Blue Ocean Plugin
• You will need to install than in the Jenkins
28/09/16 Continuous Delivery 27
Continuous Delivery Pipeline
With Pipeline Plugin
28/09/16 Continuous Delivery 28
Continuous Delivery Pipeline
With Pipeline Plugin
• Go to new job, choose the option “pipeline”
28/09/16 Continuous Delivery 29
Continuous Delivery Pipeline
With Pipeline Plugin
• In the pipeline script, define the stages of your pipeline
with it specific syntax.
• We need to have 3 simple jobs previously created. Each
job will be a stage of pipeline
28/09/16 Continuous Delivery 30
Continuous Delivery Pipeline
With Pipeline Plugin
• Now execute the pipeline job the it will be show the
execution of each pipeline stage
28/09/16 Continuous Delivery 31
Continuous Delivery Pipeline
With Build Pipeline Plugin
28/09/16 Continuous Delivery 32
Continuous Delivery Pipeline
With Build Pipeline Plugin
• This plugin uses a view as pipeline, instead a job.
• Create a new view and choose “Build Pipeline View”
28/09/16 Continuous Delivery 33
Continuous Delivery Pipeline
With Build Pipeline Plugin
• In the “Pipeline Flow” section select the first job as a
initial job (each job was configured to call the next job of
the pipeline in the post action build section)
28/09/16 Continuous Delivery 34
Continuous Delivery Pipeline
With Build Pipeline Plugin
• Now change to the pipeline view that was create and you
will see all stages of the pipeline and can manage it
28/09/16 Continuous Delivery 35
Continuous Delivery Pipeline
These pipelines only show the execution of existing Jobs in
the form of a pipeline.
That is, they organize the visualization of Jobs in sequence.
But it's still just Jobs running in sequence
28/09/16 Continuous Delivery 36
Blue Ocean
27/11/2020 Continuous Delivery 37
Blue Ocean Introduction
• Blue Ocean rethinks the user experience of Jenkins.
Designed from the ground up for Jenkins Pipeline, but still
compatible with freestyle jobs, Blue Ocean reduces clutter
and increases clarity for every member of the team.
• Sophisticated visualizations
• Pipeline editor
• Personalization
27/11/2020 Continuous Delivery 38
Blue Ocean Introduction
• Install Blue Ocean
27/11/2020 Continuous Delivery 39
Blue Ocean Introduction
• Creating a Pipeline
27/11/2020 Continuous Delivery 40
Blue Ocean Introduction
• Creating a Pipeline
27/11/2020 Continuous Delivery 41
Blue Ocean Introduction
• Creating a Pipeline
27/11/2020 Continuous Delivery 42
Blue Ocean Introduction
• Creating a Pipeline
• You can choose Git and enter with user and password
27/11/2020 Continuous Delivery 43
Blue Ocean Introduction
• Creating a Pipeline
• Or choose Github and use your “Personal access tokens”
27/11/2020 Continuous Delivery 44
Blue Ocean Introduction
• Creating a Pipeline
• Than choose the repository
27/11/2020 Continuous Delivery 45
Blue Ocean Introduction
• Creating a Pipeline
• It will created a Jenkinsfile file
• This file will hold all configuration of your pipeline
27/11/2020 Continuous Delivery 46
REPOSITORY: All source files — executable code, configuration, host environment,
and data — are committed to a version control repository. (P. M. Duvall DZone
refcard #145).
Blue Ocean Introduction
• Infrastructure as code, ou IaC
27/11/2020 Continuous Delivery 47
Blue Ocean Introduction
• Infrastructure as code, ou IaC
• It is na automating process the management and provisioning of
the IT infrastructure using configuration files, rather than physical
hardware configurations or interactive configuration tools.
• This automation eliminates the need for developers to manually
provision and manage servers, operating systems, databases, and
other infrastructure elements
27/11/2020 Continuous Delivery 48
Blue Ocean Introduction
• Infrastructure as code, ou IaC
• Benefits.
• Uniform Configuration for All Environments
• Protection against churn
• Faster and more efficient development
• Faster time to market
• Lower costs
27/11/2020 Continuous Delivery 49
Blue Ocean Introduction
• Creating a Pipeline
• With Blue Ocean plugin you can create visually the steps of your
pipeline
• Just click in the “plus” icon.
27/11/2020 Continuous Delivery 50
Blue Ocean Introduction
• Creating a Pipeline
• When you click in “plus” icon you can choose several steps types
27/11/2020 Continuous Delivery 51
Blue Ocean Introduction
• Creating a Pipeline
• A pipeline can be configurated in several ways
• For example we can execute a the existing job, like our “Simple
JOB” that already make the entire build of our project (clean, build
and test)
27/11/2020 Continuous Delivery 52
Blue Ocean Introduction
• Creating a Pipeline
• Let’s create 3 sequential steps: clean, build and test.
27/11/2020 Continuous Delivery 53
Blue Ocean Introduction
• Creating a Pipeline
• How we are using Gradle as a build tool.
• Each step of our pipeline, need just run a gradle script task.
• PS.: We need to have the gradle installed on the integration server to
Jenkins be able to execute it.
27/11/2020 Continuous Delivery 54
Blue Ocean Introduction
• Creating a Pipeline
• After execution the Blue Ocean shows to show to us all steps of
execution.
27/11/2020 Continuous Delivery 55
Blue Ocean Introduction
• Creating a Pipeline
• We can see the log of execution
27/11/2020 Continuous Delivery 56
Blue Ocean Introduction
• Creating a Pipeline
• If some steps failed, we can see what went wrong
27/11/2020 Continuous Delivery 57
Blue Ocean Introduction
• Creating a Pipeline
• The Blue Ocean Plugin committed the Jenkinksfile into our project
27/11/2020 Continuous Delivery 58
Blue Ocean Improve our pipeline
27/11/2020 Continuous Delivery 59
Blue Ocean Improve our pipeline
• Continuous Code Quality
27/11/2020 Continuous Delivery 60
PARALLEL TESTS: Run multiple tests in parallel across hardware instances to
decrease the time in running tests. (P. M. Duvall DZone refcard #145).
FAST BUILDS: The commit build provides feedback on common build problems as
quickly as possible — usually in under 10 minutes. (P. M. Duvall DZone refcard
#145).
Blue Ocean Improve our pipeline
• Continuous Code Quality
• Standard sonarqube execution is very simple
• Download the community version, and run the bin/sonar.sh start
command
27/11/2020 Continuous Delivery 61
Blue Ocean Improve our pipeline
• Continuous Code Quality
• The sonarqube will run at the address: http://localhost:9000
• Default User: admin
• Default Password: admin
27/11/2020 Continuous Delivery 62
Blue Ocean Improve our pipeline
• Continuous Code Quality
• Add sonarqube plugin at gradle script
• And run sonarqube task
27/11/2020 Continuous Delivery 63
Blue Ocean Improve our pipeline
• Continuous Code Quality
• The result will be published automatically on sonarqube
27/11/2020 Continuous Delivery 64
Blue Ocean Improve our pipeline
• Continuous Code Quality
• We can see the report on sonarqube
27/11/2020 Continuous Delivery 65
Blue Ocean Improve our pipeline
• Continuous Code Quality
• Add a parallel step to run sonarqube gradle task
27/11/2020 Continuous Delivery 66
Blue Ocean Improve our pipeline
• Continuous Code Quality
• Allow Authentication in Sonarqube
• Administration > Configuration > General Settings > Security, and set
the force user authentication property to true
27/11/2020 Continuous Delivery 67
Blue Ocean Improve our pipeline
• Continuous Code Quality
• Sonarqube tokens
• Administration > Security > Users. Once established, a token is the
only credential needed to run an analysis. Pass it as the value to the
sonar.login property
27/11/2020 Continuous Delivery 68
Blue Ocean Improve our pipeline
• Continuous Code Quality
• Sonarqube tokens
• Administration > Security > Users. Once established, a token is the
only credential needed to run an analysis. Pass it as the value to the
sonar.login property
27/11/2020 Continuous Delivery 69
System.getProperties('my.property') = -D my.property=value
Blue Ocean Improve our pipeline
• Continuous Code Quality
• Coverage on Sonarqube
27/11/2020 Continuous Delivery 70
Blue Ocean Improve our pipeline
• Continuous Delivery vs Continuous Deployment
27/11/2020 Continuous Delivery 71
Blue Ocean Improve our pipeline
• Continuous Delivery vs Continuous Deployment
27/11/2020 Continuous Delivery 72
Blue Ocean Improve our pipeline
• DataBase Migration
• Flyway: Version control for your database. Robust schema
evolution across all your environments. With ease, pleasure and
plain SQL.
27/11/2020 Continuous Delivery 73
SCRIPTED DATABASE: Script all database actions as part of the build process. (P.
M. Duvall DZone refcard #145).
DATABASE UPGRADE: Use scripts to apply incremental changes in each target
environment to a database schema and data. (P. M. Duvall DZone refcard #145).
Blue Ocean Improve our pipeline
• DataBase Migration
• As we are using Gradle as build tool, configure the flyway Gradle
plugin
27/11/2020 Continuous Delivery 74
Blue Ocean Improve our pipeline
• DataBase Migration
• As we are using Gradle as build tool, configure the flyway Gradle
plugin
27/11/2020 Continuous Delivery 75
Blue Ocean Improve our pipeline
• DataBase Migration
• Configure inside resources/db/migration the migrations scripts
27/11/2020 Continuous Delivery 76
Blue Ocean Improve our pipeline
• DataBase Migration
• Example of migration script
27/11/2020 Continuous Delivery 77
Blue Ocean Improve our pipeline
• DataBase Migration
• Configure sensitive data by Gradle parameters in step
27/11/2020 Continuous Delivery 78
project.property('my.property') = -P my.property=value
Blue Ocean Improve our pipeline
• DataBase Migration
• As a result, a flyway_schema_history table was created and the
initial user was insert into users table.
27/11/2020 Continuous Delivery 79
Blue Ocean Improve our pipeline
• Deploy
27/11/2020 Continuous Delivery 80
BLUE-GREEN DEPLOYMENTS: Deploy software to a non-production environment
(call it blue) while production continues to run. Once it’s deployed and “warmed up,”
switch production (green) to non-production and blue to green simultaneously. (P.
M. Duvall DZone refcard #145).
PRODUCTION-LIKE ENVIRONMENTS: Target environments are as similar to
production as possible. (P. M. Duvall DZone refcard #145).
Blue Ocean Improve our pipeline
• Deploying using SSH
27/11/2020 Continuous Delivery 81
Blue Ocean Improve our pipeline
• Deploying using SSH
27/11/2020 Continuous Delivery 82
Blue Ocean Improve our pipeline
• Deploying using SSH
27/11/2020 Continuous Delivery 83
We can execute command
to restart the application
Blue Ocean Improve our pipeline
• Deploying to Heroku
• Heroku is a PaaS (Platform as a Service) that allows you to host up
to 5 applications for free
27/11/2020 Continuous Delivery 84
Blue Ocean Improve our pipeline
• Deploying to Heroku
• Create a Heroku Application
27/11/2020 Continuous Delivery 85
Blue Ocean Improve our pipeline
• Deploying to Heroku
• Install the Heroku Command Line Interface (CLI)
27/11/2020 Continuous Delivery 86
Blue Ocean Improve our pipeline
• Deploying to Heroku
• Log in
27/11/2020 Continuous Delivery 87
Blue Ocean Improve our pipeline
• Deploying to Heroku
• Add a Heroku rsa key.
27/11/2020 Continuous Delivery 88
Blue Ocean Improve our pipeline
• Deploying to Heroku
• Add Heroku gradle plugin
27/11/2020 Continuous Delivery 89
Blue Ocean Improve our pipeline
• Deploying to Heroku
• Configuring the last pipeline step
27/11/2020 Continuous Delivery 90
Blue Ocean Improve our pipeline
• Deploying to heroku
27/11/2020 Continuous Delivery 91
Blue Ocean Improve our pipeline
• Deploying to heroku
27/11/2020 Continuous Delivery 92
https://jadson-pipe-line-demo /calculator/sum?a=10&b=10.herokuapp.com
Your app name Service Parameters
Blue Ocean Improve our pipeline
• Complete CI/CD Pipeline
27/11/2020 Continuous Delivery 93
Blue Ocean Improve our pipeline
• Final Jenkins File
27/11/2020 Continuous Delivery 94
References
• Fowler, M., Continuous Integration
https://martinfowler.com/articles/continuousIntegration.html,
Published at May 2006. Last access at Aug. 2020.
• P. M. Duvall. Continuous delivery: Patterns and
antipatterns in the software life cycle -
https://dzone.com/refcardz/continuous-delivery-patterns.
DZone refcard #145, 2011.
• Dashboard View Plugin
• https://plugins.jenkins.io/dashboard-view/. Last access at Aug.
2020
• Jenkinks User Documentation Home. Blue Ocean
https://www.jenkins.io/doc/book/blueocean/. Last access at
Aug. 2020
27/11/2020 Continuous Delivery 95
References
• Gradle build. https://gradle.org/releases/. Last access at
Aug. 2020.
• Build pipelines with Jenkins 2 by example.
https://bmuschko.com/blog/jenkins-build-pipeline/.
Published 30, 2017. Last access at Aug. 2020.
• Song, Matthew. Building a CI pipeline with Blue Ocean.
https://medium.com/ecs-digital/building-a-ci-pipeline-with-
blue-ocean-6bb9b02788eb. Jan, 2019. Last access at
Aug. 2020.
27/11/2020 Continuous Delivery 96
References
• Jenkins User Documentation Home. Using a Jenkinsfile.
https://www.jenkins.io/doc/book/pipeline/jenkinsfile/. Last
access at Aug. 2020.
• Lloyd, Caleb. Jenkins Screencast Part 1: Setup
Jenkins Blue Ocean with Docker.
https://boxboat.com/2017/06/20/jenkins-screencast-setup-
blue-ocean-docker/. Jun, 2017. Last access at Aug. 2020.
27/11/2020 Continuous Delivery 97
Continuous Delivery27/11/2020 98

More Related Content

What's hot

Jenkins for java world
Jenkins for java worldJenkins for java world
Jenkins for java worldAshok Kumar
 
CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...
CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...
CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...Edureka!
 
Maven Basics - Explained
Maven Basics - ExplainedMaven Basics - Explained
Maven Basics - ExplainedSmita Prasad
 
DevJam 2019 - Introduction to Kubernetes
DevJam 2019 - Introduction to KubernetesDevJam 2019 - Introduction to Kubernetes
DevJam 2019 - Introduction to KubernetesRonny Trommer
 
Hacking Jenkins
Hacking JenkinsHacking Jenkins
Hacking JenkinsMiro Cupak
 
An Introduction to Kubernetes
An Introduction to KubernetesAn Introduction to Kubernetes
An Introduction to KubernetesImesh Gunaratne
 
Kubernetes for Beginners: An Introductory Guide
Kubernetes for Beginners: An Introductory GuideKubernetes for Beginners: An Introductory Guide
Kubernetes for Beginners: An Introductory GuideBytemark
 
Docker Networking Overview
Docker Networking OverviewDocker Networking Overview
Docker Networking OverviewSreenivas Makam
 
DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...
DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...
DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...Simplilearn
 
Kubernetes Architecture | Understanding Kubernetes Components | Kubernetes Tu...
Kubernetes Architecture | Understanding Kubernetes Components | Kubernetes Tu...Kubernetes Architecture | Understanding Kubernetes Components | Kubernetes Tu...
Kubernetes Architecture | Understanding Kubernetes Components | Kubernetes Tu...Edureka!
 

What's hot (20)

Jenkins Overview
Jenkins OverviewJenkins Overview
Jenkins Overview
 
Jenkins tutorial
Jenkins tutorialJenkins tutorial
Jenkins tutorial
 
Jenkins tutorial
Jenkins tutorialJenkins tutorial
Jenkins tutorial
 
Jenkins for java world
Jenkins for java worldJenkins for java world
Jenkins for java world
 
CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...
CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...
CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...
 
Jenkins Tutorial.pdf
Jenkins Tutorial.pdfJenkins Tutorial.pdf
Jenkins Tutorial.pdf
 
Maven Basics - Explained
Maven Basics - ExplainedMaven Basics - Explained
Maven Basics - Explained
 
Jenkins
JenkinsJenkins
Jenkins
 
DevJam 2019 - Introduction to Kubernetes
DevJam 2019 - Introduction to KubernetesDevJam 2019 - Introduction to Kubernetes
DevJam 2019 - Introduction to Kubernetes
 
Hacking Jenkins
Hacking JenkinsHacking Jenkins
Hacking Jenkins
 
Jenkins Automation
Jenkins AutomationJenkins Automation
Jenkins Automation
 
DevOps with Kubernetes
DevOps with KubernetesDevOps with Kubernetes
DevOps with Kubernetes
 
An Introduction to Kubernetes
An Introduction to KubernetesAn Introduction to Kubernetes
An Introduction to Kubernetes
 
Kubernetes for Beginners: An Introductory Guide
Kubernetes for Beginners: An Introductory GuideKubernetes for Beginners: An Introductory Guide
Kubernetes for Beginners: An Introductory Guide
 
Jenkins
JenkinsJenkins
Jenkins
 
Jenkins CI presentation
Jenkins CI presentationJenkins CI presentation
Jenkins CI presentation
 
Docker Networking Overview
Docker Networking OverviewDocker Networking Overview
Docker Networking Overview
 
DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...
DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...
DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...
 
Kubernetes Architecture | Understanding Kubernetes Components | Kubernetes Tu...
Kubernetes Architecture | Understanding Kubernetes Components | Kubernetes Tu...Kubernetes Architecture | Understanding Kubernetes Components | Kubernetes Tu...
Kubernetes Architecture | Understanding Kubernetes Components | Kubernetes Tu...
 
Jenkins presentation
Jenkins presentationJenkins presentation
Jenkins presentation
 

Similar to Continuous Delivery with Jenkins

Ordina Accelerator program 2019 - Jenkins blue ocean pipelines
Ordina Accelerator program 2019 - Jenkins blue ocean pipelinesOrdina Accelerator program 2019 - Jenkins blue ocean pipelines
Ordina Accelerator program 2019 - Jenkins blue ocean pipelinesBert Koorengevel
 
Continuous Integration using Jenkins with Python
Continuous Integration using Jenkins with PythonContinuous Integration using Jenkins with Python
Continuous Integration using Jenkins with PythonInexture Solutions
 
JUC Europe 2015: From Virtual Machines to Containers: Achieving Continuous In...
JUC Europe 2015: From Virtual Machines to Containers: Achieving Continuous In...JUC Europe 2015: From Virtual Machines to Containers: Achieving Continuous In...
JUC Europe 2015: From Virtual Machines to Containers: Achieving Continuous In...CloudBees
 
Louisville Software Engineering Meet Up: Continuous Integration Using Jenkins
Louisville Software Engineering Meet Up: Continuous Integration Using JenkinsLouisville Software Engineering Meet Up: Continuous Integration Using Jenkins
Louisville Software Engineering Meet Up: Continuous Integration Using JenkinsJames Strong
 
Continous Integration.pptx
Continous Integration.pptxContinous Integration.pptx
Continous Integration.pptxAnuj Sharma
 
Eclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/Hudson
Eclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/HudsonEclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/Hudson
Eclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/HudsonVladLica
 
Jenkins_1679702972.pdf
Jenkins_1679702972.pdfJenkins_1679702972.pdf
Jenkins_1679702972.pdfMahmoudAlnmr1
 
SQL Server DevOps Jumpstart
SQL Server DevOps JumpstartSQL Server DevOps Jumpstart
SQL Server DevOps JumpstartOri Donner
 
Continuous delivery with jenkins pipelines @ devdays
Continuous delivery with jenkins pipelines  @ devdaysContinuous delivery with jenkins pipelines  @ devdays
Continuous delivery with jenkins pipelines @ devdaysRoman Pickl
 
Continous integration and delivery for single page applications
Continous integration and delivery for single page applicationsContinous integration and delivery for single page applications
Continous integration and delivery for single page applicationsSunil Dalal
 
Jenkins Continuous Delivery
Jenkins Continuous DeliveryJenkins Continuous Delivery
Jenkins Continuous DeliveryJadson Santos
 
Deploying Mule Applications with Jenkins, Azure and BitBucket (1).pptx
Deploying Mule Applications with Jenkins, Azure and BitBucket (1).pptxDeploying Mule Applications with Jenkins, Azure and BitBucket (1).pptx
Deploying Mule Applications with Jenkins, Azure and BitBucket (1).pptxPankaj Goyal
 
Continuous Deployment of your Application @jSession#5
Continuous Deployment of your Application @jSession#5Continuous Deployment of your Application @jSession#5
Continuous Deployment of your Application @jSession#5Marcin Grzejszczak
 
Nagpur Mulesoft Meetup on CICD using Jenkins
Nagpur Mulesoft Meetup on CICD using JenkinsNagpur Mulesoft Meetup on CICD using Jenkins
Nagpur Mulesoft Meetup on CICD using Jenkinspqrs1234
 

Similar to Continuous Delivery with Jenkins (20)

Ordina Accelerator program 2019 - Jenkins blue ocean pipelines
Ordina Accelerator program 2019 - Jenkins blue ocean pipelinesOrdina Accelerator program 2019 - Jenkins blue ocean pipelines
Ordina Accelerator program 2019 - Jenkins blue ocean pipelines
 
Basic Jenkins Guide.pptx
Basic Jenkins Guide.pptxBasic Jenkins Guide.pptx
Basic Jenkins Guide.pptx
 
Jenkins pipeline as code
Jenkins pipeline as codeJenkins pipeline as code
Jenkins pipeline as code
 
Continuous Integration using Jenkins with Python
Continuous Integration using Jenkins with PythonContinuous Integration using Jenkins with Python
Continuous Integration using Jenkins with Python
 
Contineous integration
Contineous integrationContineous integration
Contineous integration
 
JUC Europe 2015: From Virtual Machines to Containers: Achieving Continuous In...
JUC Europe 2015: From Virtual Machines to Containers: Achieving Continuous In...JUC Europe 2015: From Virtual Machines to Containers: Achieving Continuous In...
JUC Europe 2015: From Virtual Machines to Containers: Achieving Continuous In...
 
From Virtual Machines to Containers
From Virtual Machines to ContainersFrom Virtual Machines to Containers
From Virtual Machines to Containers
 
Louisville Software Engineering Meet Up: Continuous Integration Using Jenkins
Louisville Software Engineering Meet Up: Continuous Integration Using JenkinsLouisville Software Engineering Meet Up: Continuous Integration Using Jenkins
Louisville Software Engineering Meet Up: Continuous Integration Using Jenkins
 
Continous Integration.pptx
Continous Integration.pptxContinous Integration.pptx
Continous Integration.pptx
 
Eclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/Hudson
Eclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/HudsonEclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/Hudson
Eclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/Hudson
 
Jenkins_1679702972.pdf
Jenkins_1679702972.pdfJenkins_1679702972.pdf
Jenkins_1679702972.pdf
 
jenkins.pdf
jenkins.pdfjenkins.pdf
jenkins.pdf
 
CI/CD
CI/CDCI/CD
CI/CD
 
SQL Server DevOps Jumpstart
SQL Server DevOps JumpstartSQL Server DevOps Jumpstart
SQL Server DevOps Jumpstart
 
Continuous delivery with jenkins pipelines @ devdays
Continuous delivery with jenkins pipelines  @ devdaysContinuous delivery with jenkins pipelines  @ devdays
Continuous delivery with jenkins pipelines @ devdays
 
Continous integration and delivery for single page applications
Continous integration and delivery for single page applicationsContinous integration and delivery for single page applications
Continous integration and delivery for single page applications
 
Jenkins Continuous Delivery
Jenkins Continuous DeliveryJenkins Continuous Delivery
Jenkins Continuous Delivery
 
Deploying Mule Applications with Jenkins, Azure and BitBucket (1).pptx
Deploying Mule Applications with Jenkins, Azure and BitBucket (1).pptxDeploying Mule Applications with Jenkins, Azure and BitBucket (1).pptx
Deploying Mule Applications with Jenkins, Azure and BitBucket (1).pptx
 
Continuous Deployment of your Application @jSession#5
Continuous Deployment of your Application @jSession#5Continuous Deployment of your Application @jSession#5
Continuous Deployment of your Application @jSession#5
 
Nagpur Mulesoft Meetup on CICD using Jenkins
Nagpur Mulesoft Meetup on CICD using JenkinsNagpur Mulesoft Meetup on CICD using Jenkins
Nagpur Mulesoft Meetup on CICD using Jenkins
 

More from Jadson Santos

A Deep Dive into Continuous Integration Monitoring Practices
A Deep Dive into Continuous Integration Monitoring PracticesA Deep Dive into Continuous Integration Monitoring Practices
A Deep Dive into Continuous Integration Monitoring PracticesJadson Santos
 
Containerizing a Web Application with Vue.js and Java
Containerizing a Web Application with Vue.js and JavaContainerizing a Web Application with Vue.js and Java
Containerizing a Web Application with Vue.js and JavaJadson Santos
 
Cd with Github Travis CI and Heroku
Cd with Github Travis CI and HerokuCd with Github Travis CI and Heroku
Cd with Github Travis CI and HerokuJadson Santos
 
Introduction to angular with a simple but complete project
Introduction to angular with a simple but complete projectIntroduction to angular with a simple but complete project
Introduction to angular with a simple but complete projectJadson Santos
 
Hazelcast Distributed Lock
Hazelcast Distributed LockHazelcast Distributed Lock
Hazelcast Distributed LockJadson Santos
 
Introdução ao Flyway
Introdução ao FlywayIntrodução ao Flyway
Introdução ao FlywayJadson Santos
 
Mini curso gerenciamento de configuração e mudança com GIT + Eclipse - I...
Mini curso gerenciamento de configuração e mudança com GIT + Eclipse  -  I...Mini curso gerenciamento de configuração e mudança com GIT + Eclipse  -  I...
Mini curso gerenciamento de configuração e mudança com GIT + Eclipse - I...Jadson Santos
 
Usando hiberante de forma otimizada
Usando hiberante de forma otimizadaUsando hiberante de forma otimizada
Usando hiberante de forma otimizadaJadson Santos
 
Usando JMeter para testar sua aplicação JSF
Usando JMeter para testar sua aplicação JSFUsando JMeter para testar sua aplicação JSF
Usando JMeter para testar sua aplicação JSFJadson Santos
 
ICEIS 2013 Presentation
ICEIS 2013 PresentationICEIS 2013 Presentation
ICEIS 2013 PresentationJadson Santos
 
Conditional Execution - A Pattern for the Implementation of Fine-Grained Vari...
Conditional Execution - A Pattern for the Implementation of Fine-Grained Vari...Conditional Execution - A Pattern for the Implementation of Fine-Grained Vari...
Conditional Execution - A Pattern for the Implementation of Fine-Grained Vari...Jadson Santos
 

More from Jadson Santos (18)

A Deep Dive into Continuous Integration Monitoring Practices
A Deep Dive into Continuous Integration Monitoring PracticesA Deep Dive into Continuous Integration Monitoring Practices
A Deep Dive into Continuous Integration Monitoring Practices
 
Containerizing a Web Application with Vue.js and Java
Containerizing a Web Application with Vue.js and JavaContainerizing a Web Application with Vue.js and Java
Containerizing a Web Application with Vue.js and Java
 
Cd with Github Travis CI and Heroku
Cd with Github Travis CI and HerokuCd with Github Travis CI and Heroku
Cd with Github Travis CI and Heroku
 
Vue.js
Vue.jsVue.js
Vue.js
 
Introduction to angular with a simple but complete project
Introduction to angular with a simple but complete projectIntroduction to angular with a simple but complete project
Introduction to angular with a simple but complete project
 
Hazelcast Distributed Lock
Hazelcast Distributed LockHazelcast Distributed Lock
Hazelcast Distributed Lock
 
Bootstrap
BootstrapBootstrap
Bootstrap
 
Testes Unitários
Testes UnitáriosTestes Unitários
Testes Unitários
 
Java8
Java8Java8
Java8
 
Gradle
GradleGradle
Gradle
 
Git
GitGit
Git
 
Introdução ao Flyway
Introdução ao FlywayIntrodução ao Flyway
Introdução ao Flyway
 
Mini curso gerenciamento de configuração e mudança com GIT + Eclipse - I...
Mini curso gerenciamento de configuração e mudança com GIT + Eclipse  -  I...Mini curso gerenciamento de configuração e mudança com GIT + Eclipse  -  I...
Mini curso gerenciamento de configuração e mudança com GIT + Eclipse - I...
 
Usando hiberante de forma otimizada
Usando hiberante de forma otimizadaUsando hiberante de forma otimizada
Usando hiberante de forma otimizada
 
Usando JMeter para testar sua aplicação JSF
Usando JMeter para testar sua aplicação JSFUsando JMeter para testar sua aplicação JSF
Usando JMeter para testar sua aplicação JSF
 
ICEIS 2013 Presentation
ICEIS 2013 PresentationICEIS 2013 Presentation
ICEIS 2013 Presentation
 
Enums
EnumsEnums
Enums
 
Conditional Execution - A Pattern for the Implementation of Fine-Grained Vari...
Conditional Execution - A Pattern for the Implementation of Fine-Grained Vari...Conditional Execution - A Pattern for the Implementation of Fine-Grained Vari...
Conditional Execution - A Pattern for the Implementation of Fine-Grained Vari...
 

Recently uploaded

Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfkalichargn70th171
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 

Recently uploaded (20)

Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
Exploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the ProcessExploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the Process
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 

Continuous Delivery with Jenkins

  • 2. Continuous Integration • Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible. Many teams find that this approach leads to significantly reduced integration problems and allows a team to develop cohesive software more rapidly. This article is a quick overview of Continuous Integration summarizing the technique and its current usage. 27/11/2020 Continuous Delivery 2
  • 3. Continuous Delivery and Deployment • Continuous Delivery is a software development discipline where you build software in such a way that the software can be released to production at any time. • Continuous Delivery is sometimes confused with Continuous Deployment. Continuous Deployment means that every change goes through the pipeline and automatically gets put into production, resulting in many production deployments every day. Continuous Delivery just means that you are able to do frequent deployments but may choose not to do it, usually due to businesses preferring a slower rate of deployment. In order to do Continuous Deployment you must be doing Continuous Delivery. 27/11/2020 Continuous Delivery 3
  • 5. Jenkins Introduction • Jenkins an open source automation server which enables developers around the world to reliably build, test, and deploy their software. • Jenkins works with the Job concept. • A job is an execution that is created when an event is triggered. Be it a commit, a period of time or even manually by the developer. 27/11/2020 Continuous Delivery 5 root 12345678
  • 6. Jenkins Introduction • Simple Job 27/11/2020 Continuous Delivery 6
  • 7. Jenkins Introduction • Configuring the Repository • As example, let’s use a Github repository 27/11/2020 Continuous Delivery 7 REPOSITORY: All source files — executable code, configuration, host environment, and data — are committed to a version control repositor (P. M. Duvall DZone refcard #145).
  • 8. Jenkins Introduction • Credentials • We created a pair of RSA keys, put the public on github and the private on Jenkins 27/11/2020 Continuous Delivery 8
  • 9. Jenkins Introduction • Scheduling • Every 1 hour, when there is a change in the repository (a new commit) 27/11/2020 Continuous Delivery 9 CONTINUOUS INTEGRATION: Building and testing software with every change committed to a project’s version control repositor (P. M. Duvall DZone refcard #145).
  • 10. Jenkins Introduction • Build Step 27/11/2020 Continuous Delivery 10 INDEPENDENT BUILD: Write build scripts that are decoupled from IDEs. These build scripts are executed by a CI system so that software is built at every change (P. M. Duvall DZone refcard #145). BUILD AND DEPLOYMENT SCRIPTING : Centralize all dependent libraries to reduce bloat, class path problems, and repetition of the same dependent libraries and transitive dependencies from project to project. (P. M. Duvall DZone refcard #145).
  • 11. Jenkins Introduction • Pos-Build Actions 27/11/2020 Continuous Delivery 11 AUTOMATE TESTS: Automate the verification and validation of software to include unit, component, capacity, functional, and deployment tests (P. M. Duvall DZone refcard #145).
  • 12. Jenkins Introduction • Pos-Build Actions 27/11/2020 Continuous Delivery 12 CONTINUOUS FEEDBACK: Send automated feedback from CI system to all cross-functional team members (P. M. Duvall DZone refcard #145).
  • 13. Jenkins Introduction • Build Log 27/11/2020 Continuous Delivery 13
  • 14. Jenkins Introduction • Build Configuration 27/11/2020 Continuous Delivery 14
  • 15. Jenkins Introduction • Build DashBoard 27/11/2020 Continuous Delivery 15 VISIBLE DASHBOARDS : Provide large visible displays that aggregate information from your delivery system to provide high quality feedback to the Cross-Functional Team in real time. (P. M. Duvall DZone refcard #145).
  • 16. Jenkins Introduction • Jenkins Configuration 27/11/2020 Continuous Delivery 16
  • 17. Jenkins Introduction • Jenkins Configuration • Manage Plugins 27/11/2020 Continuous Delivery 17
  • 18. Jenkins Introduction • Jenkins Configuration • System Configuration 27/11/2020 Continuous Delivery 18
  • 19. Jenkins Introduction • Jenkins Configuration • Global Tools Configuration 27/11/2020 Continuous Delivery 19
  • 20. Jenkins Introduction • Jenkins Configuration (Making the dashboard public) • Configure Global Security • Choose "Role-Based Strategy" in the "Authorization" section 27/11/2020 Continuous Delivery 20
  • 21. Jenkins Introduction • Jenkins Configuration (Making the dashboard public) • Manage and Assign Roles -> Manage Roles • Create a new “public” role and give permission just to read: Overall, Jobs and View. 27/11/2020 Continuous Delivery 21
  • 22. Jenkins Introduction • Jenkins Configuration (Making the dashboard public) • Manage and Assign Roles -> Assign Roles • Assing “public” role to “Anonymous” user 27/11/2020 Continuous Delivery 22
  • 23. Jenkins Introduction • Jenkins Configuration (Making the dashboard public) • Now “Anonymous” users (without login) can view the dashboard 27/11/2020 Continuous Delivery 23
  • 24. Pipeline 27/11/2020 Continuous Delivery 24 DEPLOYMENT PIPELINE: A deployment pipeline is an automated implementation of your application’s build, test, deploy, and release process. (P. M. Duvall DZone refcard #145).
  • 25. Continuous Delivery Pipeline • Pipeline is a concept to avoid waste in the software development process and is used to provide quick feedback to the team during the deployment process. 28/09/16 Continuous Delivery 25
  • 26. Continuous Delivery Pipeline • How does it works? • The software deployment is divided into different stages, where the tasks (jobs) are performed in each of these stages. At the same stage, tasks can be performed in parallel, to assist in the feedback loop. When all tasks in one stage are approved, tasks in the next stages can begin. 28/09/16 Continuous Delivery 26
  • 27. Continuous Delivery Pipeline • Jenkins has some Pipeline Plugins • We will demonstrated 3 Jenkins plugins: • Pipeline Plugin • Build Pipeline Plugin • Blue Ocean Plugin • You will need to install than in the Jenkins 28/09/16 Continuous Delivery 27
  • 28. Continuous Delivery Pipeline With Pipeline Plugin 28/09/16 Continuous Delivery 28
  • 29. Continuous Delivery Pipeline With Pipeline Plugin • Go to new job, choose the option “pipeline” 28/09/16 Continuous Delivery 29
  • 30. Continuous Delivery Pipeline With Pipeline Plugin • In the pipeline script, define the stages of your pipeline with it specific syntax. • We need to have 3 simple jobs previously created. Each job will be a stage of pipeline 28/09/16 Continuous Delivery 30
  • 31. Continuous Delivery Pipeline With Pipeline Plugin • Now execute the pipeline job the it will be show the execution of each pipeline stage 28/09/16 Continuous Delivery 31
  • 32. Continuous Delivery Pipeline With Build Pipeline Plugin 28/09/16 Continuous Delivery 32
  • 33. Continuous Delivery Pipeline With Build Pipeline Plugin • This plugin uses a view as pipeline, instead a job. • Create a new view and choose “Build Pipeline View” 28/09/16 Continuous Delivery 33
  • 34. Continuous Delivery Pipeline With Build Pipeline Plugin • In the “Pipeline Flow” section select the first job as a initial job (each job was configured to call the next job of the pipeline in the post action build section) 28/09/16 Continuous Delivery 34
  • 35. Continuous Delivery Pipeline With Build Pipeline Plugin • Now change to the pipeline view that was create and you will see all stages of the pipeline and can manage it 28/09/16 Continuous Delivery 35
  • 36. Continuous Delivery Pipeline These pipelines only show the execution of existing Jobs in the form of a pipeline. That is, they organize the visualization of Jobs in sequence. But it's still just Jobs running in sequence 28/09/16 Continuous Delivery 36
  • 38. Blue Ocean Introduction • Blue Ocean rethinks the user experience of Jenkins. Designed from the ground up for Jenkins Pipeline, but still compatible with freestyle jobs, Blue Ocean reduces clutter and increases clarity for every member of the team. • Sophisticated visualizations • Pipeline editor • Personalization 27/11/2020 Continuous Delivery 38
  • 39. Blue Ocean Introduction • Install Blue Ocean 27/11/2020 Continuous Delivery 39
  • 40. Blue Ocean Introduction • Creating a Pipeline 27/11/2020 Continuous Delivery 40
  • 41. Blue Ocean Introduction • Creating a Pipeline 27/11/2020 Continuous Delivery 41
  • 42. Blue Ocean Introduction • Creating a Pipeline 27/11/2020 Continuous Delivery 42
  • 43. Blue Ocean Introduction • Creating a Pipeline • You can choose Git and enter with user and password 27/11/2020 Continuous Delivery 43
  • 44. Blue Ocean Introduction • Creating a Pipeline • Or choose Github and use your “Personal access tokens” 27/11/2020 Continuous Delivery 44
  • 45. Blue Ocean Introduction • Creating a Pipeline • Than choose the repository 27/11/2020 Continuous Delivery 45
  • 46. Blue Ocean Introduction • Creating a Pipeline • It will created a Jenkinsfile file • This file will hold all configuration of your pipeline 27/11/2020 Continuous Delivery 46 REPOSITORY: All source files — executable code, configuration, host environment, and data — are committed to a version control repository. (P. M. Duvall DZone refcard #145).
  • 47. Blue Ocean Introduction • Infrastructure as code, ou IaC 27/11/2020 Continuous Delivery 47
  • 48. Blue Ocean Introduction • Infrastructure as code, ou IaC • It is na automating process the management and provisioning of the IT infrastructure using configuration files, rather than physical hardware configurations or interactive configuration tools. • This automation eliminates the need for developers to manually provision and manage servers, operating systems, databases, and other infrastructure elements 27/11/2020 Continuous Delivery 48
  • 49. Blue Ocean Introduction • Infrastructure as code, ou IaC • Benefits. • Uniform Configuration for All Environments • Protection against churn • Faster and more efficient development • Faster time to market • Lower costs 27/11/2020 Continuous Delivery 49
  • 50. Blue Ocean Introduction • Creating a Pipeline • With Blue Ocean plugin you can create visually the steps of your pipeline • Just click in the “plus” icon. 27/11/2020 Continuous Delivery 50
  • 51. Blue Ocean Introduction • Creating a Pipeline • When you click in “plus” icon you can choose several steps types 27/11/2020 Continuous Delivery 51
  • 52. Blue Ocean Introduction • Creating a Pipeline • A pipeline can be configurated in several ways • For example we can execute a the existing job, like our “Simple JOB” that already make the entire build of our project (clean, build and test) 27/11/2020 Continuous Delivery 52
  • 53. Blue Ocean Introduction • Creating a Pipeline • Let’s create 3 sequential steps: clean, build and test. 27/11/2020 Continuous Delivery 53
  • 54. Blue Ocean Introduction • Creating a Pipeline • How we are using Gradle as a build tool. • Each step of our pipeline, need just run a gradle script task. • PS.: We need to have the gradle installed on the integration server to Jenkins be able to execute it. 27/11/2020 Continuous Delivery 54
  • 55. Blue Ocean Introduction • Creating a Pipeline • After execution the Blue Ocean shows to show to us all steps of execution. 27/11/2020 Continuous Delivery 55
  • 56. Blue Ocean Introduction • Creating a Pipeline • We can see the log of execution 27/11/2020 Continuous Delivery 56
  • 57. Blue Ocean Introduction • Creating a Pipeline • If some steps failed, we can see what went wrong 27/11/2020 Continuous Delivery 57
  • 58. Blue Ocean Introduction • Creating a Pipeline • The Blue Ocean Plugin committed the Jenkinksfile into our project 27/11/2020 Continuous Delivery 58
  • 59. Blue Ocean Improve our pipeline 27/11/2020 Continuous Delivery 59
  • 60. Blue Ocean Improve our pipeline • Continuous Code Quality 27/11/2020 Continuous Delivery 60 PARALLEL TESTS: Run multiple tests in parallel across hardware instances to decrease the time in running tests. (P. M. Duvall DZone refcard #145). FAST BUILDS: The commit build provides feedback on common build problems as quickly as possible — usually in under 10 minutes. (P. M. Duvall DZone refcard #145).
  • 61. Blue Ocean Improve our pipeline • Continuous Code Quality • Standard sonarqube execution is very simple • Download the community version, and run the bin/sonar.sh start command 27/11/2020 Continuous Delivery 61
  • 62. Blue Ocean Improve our pipeline • Continuous Code Quality • The sonarqube will run at the address: http://localhost:9000 • Default User: admin • Default Password: admin 27/11/2020 Continuous Delivery 62
  • 63. Blue Ocean Improve our pipeline • Continuous Code Quality • Add sonarqube plugin at gradle script • And run sonarqube task 27/11/2020 Continuous Delivery 63
  • 64. Blue Ocean Improve our pipeline • Continuous Code Quality • The result will be published automatically on sonarqube 27/11/2020 Continuous Delivery 64
  • 65. Blue Ocean Improve our pipeline • Continuous Code Quality • We can see the report on sonarqube 27/11/2020 Continuous Delivery 65
  • 66. Blue Ocean Improve our pipeline • Continuous Code Quality • Add a parallel step to run sonarqube gradle task 27/11/2020 Continuous Delivery 66
  • 67. Blue Ocean Improve our pipeline • Continuous Code Quality • Allow Authentication in Sonarqube • Administration > Configuration > General Settings > Security, and set the force user authentication property to true 27/11/2020 Continuous Delivery 67
  • 68. Blue Ocean Improve our pipeline • Continuous Code Quality • Sonarqube tokens • Administration > Security > Users. Once established, a token is the only credential needed to run an analysis. Pass it as the value to the sonar.login property 27/11/2020 Continuous Delivery 68
  • 69. Blue Ocean Improve our pipeline • Continuous Code Quality • Sonarqube tokens • Administration > Security > Users. Once established, a token is the only credential needed to run an analysis. Pass it as the value to the sonar.login property 27/11/2020 Continuous Delivery 69 System.getProperties('my.property') = -D my.property=value
  • 70. Blue Ocean Improve our pipeline • Continuous Code Quality • Coverage on Sonarqube 27/11/2020 Continuous Delivery 70
  • 71. Blue Ocean Improve our pipeline • Continuous Delivery vs Continuous Deployment 27/11/2020 Continuous Delivery 71
  • 72. Blue Ocean Improve our pipeline • Continuous Delivery vs Continuous Deployment 27/11/2020 Continuous Delivery 72
  • 73. Blue Ocean Improve our pipeline • DataBase Migration • Flyway: Version control for your database. Robust schema evolution across all your environments. With ease, pleasure and plain SQL. 27/11/2020 Continuous Delivery 73 SCRIPTED DATABASE: Script all database actions as part of the build process. (P. M. Duvall DZone refcard #145). DATABASE UPGRADE: Use scripts to apply incremental changes in each target environment to a database schema and data. (P. M. Duvall DZone refcard #145).
  • 74. Blue Ocean Improve our pipeline • DataBase Migration • As we are using Gradle as build tool, configure the flyway Gradle plugin 27/11/2020 Continuous Delivery 74
  • 75. Blue Ocean Improve our pipeline • DataBase Migration • As we are using Gradle as build tool, configure the flyway Gradle plugin 27/11/2020 Continuous Delivery 75
  • 76. Blue Ocean Improve our pipeline • DataBase Migration • Configure inside resources/db/migration the migrations scripts 27/11/2020 Continuous Delivery 76
  • 77. Blue Ocean Improve our pipeline • DataBase Migration • Example of migration script 27/11/2020 Continuous Delivery 77
  • 78. Blue Ocean Improve our pipeline • DataBase Migration • Configure sensitive data by Gradle parameters in step 27/11/2020 Continuous Delivery 78 project.property('my.property') = -P my.property=value
  • 79. Blue Ocean Improve our pipeline • DataBase Migration • As a result, a flyway_schema_history table was created and the initial user was insert into users table. 27/11/2020 Continuous Delivery 79
  • 80. Blue Ocean Improve our pipeline • Deploy 27/11/2020 Continuous Delivery 80 BLUE-GREEN DEPLOYMENTS: Deploy software to a non-production environment (call it blue) while production continues to run. Once it’s deployed and “warmed up,” switch production (green) to non-production and blue to green simultaneously. (P. M. Duvall DZone refcard #145). PRODUCTION-LIKE ENVIRONMENTS: Target environments are as similar to production as possible. (P. M. Duvall DZone refcard #145).
  • 81. Blue Ocean Improve our pipeline • Deploying using SSH 27/11/2020 Continuous Delivery 81
  • 82. Blue Ocean Improve our pipeline • Deploying using SSH 27/11/2020 Continuous Delivery 82
  • 83. Blue Ocean Improve our pipeline • Deploying using SSH 27/11/2020 Continuous Delivery 83 We can execute command to restart the application
  • 84. Blue Ocean Improve our pipeline • Deploying to Heroku • Heroku is a PaaS (Platform as a Service) that allows you to host up to 5 applications for free 27/11/2020 Continuous Delivery 84
  • 85. Blue Ocean Improve our pipeline • Deploying to Heroku • Create a Heroku Application 27/11/2020 Continuous Delivery 85
  • 86. Blue Ocean Improve our pipeline • Deploying to Heroku • Install the Heroku Command Line Interface (CLI) 27/11/2020 Continuous Delivery 86
  • 87. Blue Ocean Improve our pipeline • Deploying to Heroku • Log in 27/11/2020 Continuous Delivery 87
  • 88. Blue Ocean Improve our pipeline • Deploying to Heroku • Add a Heroku rsa key. 27/11/2020 Continuous Delivery 88
  • 89. Blue Ocean Improve our pipeline • Deploying to Heroku • Add Heroku gradle plugin 27/11/2020 Continuous Delivery 89
  • 90. Blue Ocean Improve our pipeline • Deploying to Heroku • Configuring the last pipeline step 27/11/2020 Continuous Delivery 90
  • 91. Blue Ocean Improve our pipeline • Deploying to heroku 27/11/2020 Continuous Delivery 91
  • 92. Blue Ocean Improve our pipeline • Deploying to heroku 27/11/2020 Continuous Delivery 92 https://jadson-pipe-line-demo /calculator/sum?a=10&b=10.herokuapp.com Your app name Service Parameters
  • 93. Blue Ocean Improve our pipeline • Complete CI/CD Pipeline 27/11/2020 Continuous Delivery 93
  • 94. Blue Ocean Improve our pipeline • Final Jenkins File 27/11/2020 Continuous Delivery 94
  • 95. References • Fowler, M., Continuous Integration https://martinfowler.com/articles/continuousIntegration.html, Published at May 2006. Last access at Aug. 2020. • P. M. Duvall. Continuous delivery: Patterns and antipatterns in the software life cycle - https://dzone.com/refcardz/continuous-delivery-patterns. DZone refcard #145, 2011. • Dashboard View Plugin • https://plugins.jenkins.io/dashboard-view/. Last access at Aug. 2020 • Jenkinks User Documentation Home. Blue Ocean https://www.jenkins.io/doc/book/blueocean/. Last access at Aug. 2020 27/11/2020 Continuous Delivery 95
  • 96. References • Gradle build. https://gradle.org/releases/. Last access at Aug. 2020. • Build pipelines with Jenkins 2 by example. https://bmuschko.com/blog/jenkins-build-pipeline/. Published 30, 2017. Last access at Aug. 2020. • Song, Matthew. Building a CI pipeline with Blue Ocean. https://medium.com/ecs-digital/building-a-ci-pipeline-with- blue-ocean-6bb9b02788eb. Jan, 2019. Last access at Aug. 2020. 27/11/2020 Continuous Delivery 96
  • 97. References • Jenkins User Documentation Home. Using a Jenkinsfile. https://www.jenkins.io/doc/book/pipeline/jenkinsfile/. Last access at Aug. 2020. • Lloyd, Caleb. Jenkins Screencast Part 1: Setup Jenkins Blue Ocean with Docker. https://boxboat.com/2017/06/20/jenkins-screencast-setup- blue-ocean-docker/. Jun, 2017. Last access at Aug. 2020. 27/11/2020 Continuous Delivery 97