SlideShare a Scribd company logo
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

Kubernetes - introduction
Kubernetes - introductionKubernetes - introduction
Kubernetes - introduction
Sparkbit
 
Jenkins presentation
Jenkins presentationJenkins presentation
Jenkins presentation
Valentin Buryakov
 
Hands-On Introduction to Kubernetes at LISA17
Hands-On Introduction to Kubernetes at LISA17Hands-On Introduction to Kubernetes at LISA17
Hands-On Introduction to Kubernetes at LISA17
Ryan Jarvinen
 
Achieving CI/CD with Kubernetes
Achieving CI/CD with KubernetesAchieving CI/CD with Kubernetes
Achieving CI/CD with Kubernetes
Ramit Surana
 
Kubernetes
KubernetesKubernetes
Kubernetes
erialc_w
 
An Introduction To Jenkins
An Introduction To JenkinsAn Introduction To Jenkins
An Introduction To Jenkins
Knoldus Inc.
 
Introduction to Kubernetes Workshop
Introduction to Kubernetes WorkshopIntroduction to Kubernetes Workshop
Introduction to Kubernetes Workshop
Bob Killen
 
Getting Started with Kubernetes
Getting Started with Kubernetes Getting Started with Kubernetes
Getting Started with Kubernetes
VMware Tanzu
 
Ansible presentation
Ansible presentationAnsible presentation
Ansible presentation
Suresh 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!
 
Kubernetes Introduction
Kubernetes IntroductionKubernetes Introduction
Kubernetes Introduction
Eric Gustafson
 
Gitlab ci-cd
Gitlab ci-cdGitlab ci-cd
Gitlab ci-cd
Dan MAGIER
 
Jenkins Overview
Jenkins OverviewJenkins Overview
Jenkins Overview
Ahmed M. Gomaa
 
Kubernetes Architecture
 Kubernetes Architecture Kubernetes Architecture
Kubernetes Architecture
Knoldus Inc.
 
Kubernetes Basics
Kubernetes BasicsKubernetes Basics
Kubernetes Basics
Rishabh Kumar
 
CI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
CI/CD with Jenkins and Docker - DevOps Meetup Day ThailandCI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
CI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
Troublemaker Khunpech
 
Kubernetes 101 for Beginners
Kubernetes 101 for BeginnersKubernetes 101 for Beginners
Kubernetes 101 for Beginners
Oktay Esgul
 
Docker Introduction
Docker IntroductionDocker Introduction
Docker Introduction
Peng Xiao
 
Kubernetes Introduction
Kubernetes IntroductionKubernetes Introduction
Kubernetes Introduction
Martin Danielsson
 

What's hot (20)

Kubernetes - introduction
Kubernetes - introductionKubernetes - introduction
Kubernetes - introduction
 
Jenkins presentation
Jenkins presentationJenkins presentation
Jenkins presentation
 
Hands-On Introduction to Kubernetes at LISA17
Hands-On Introduction to Kubernetes at LISA17Hands-On Introduction to Kubernetes at LISA17
Hands-On Introduction to Kubernetes at LISA17
 
Jenkins
JenkinsJenkins
Jenkins
 
Achieving CI/CD with Kubernetes
Achieving CI/CD with KubernetesAchieving CI/CD with Kubernetes
Achieving CI/CD with Kubernetes
 
Kubernetes
KubernetesKubernetes
Kubernetes
 
An Introduction To Jenkins
An Introduction To JenkinsAn Introduction To Jenkins
An Introduction To Jenkins
 
Introduction to Kubernetes Workshop
Introduction to Kubernetes WorkshopIntroduction to Kubernetes Workshop
Introduction to Kubernetes Workshop
 
Getting Started with Kubernetes
Getting Started with Kubernetes Getting Started with Kubernetes
Getting Started with Kubernetes
 
Ansible presentation
Ansible presentationAnsible presentation
Ansible presentation
 
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...
 
Kubernetes Introduction
Kubernetes IntroductionKubernetes Introduction
Kubernetes Introduction
 
Gitlab ci-cd
Gitlab ci-cdGitlab ci-cd
Gitlab ci-cd
 
Jenkins Overview
Jenkins OverviewJenkins Overview
Jenkins Overview
 
Kubernetes Architecture
 Kubernetes Architecture Kubernetes Architecture
Kubernetes Architecture
 
Kubernetes Basics
Kubernetes BasicsKubernetes Basics
Kubernetes Basics
 
CI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
CI/CD with Jenkins and Docker - DevOps Meetup Day ThailandCI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
CI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
 
Kubernetes 101 for Beginners
Kubernetes 101 for BeginnersKubernetes 101 for Beginners
Kubernetes 101 for Beginners
 
Docker Introduction
Docker IntroductionDocker Introduction
Docker Introduction
 
Kubernetes Introduction
Kubernetes IntroductionKubernetes Introduction
Kubernetes Introduction
 

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 pipelines
Bert Koorengevel
 
Basic Jenkins Guide.pptx
Basic Jenkins Guide.pptxBasic Jenkins Guide.pptx
Basic Jenkins Guide.pptx
Jayanga V. Liyanage
 
Jenkins pipeline as code
Jenkins pipeline as codeJenkins pipeline as code
Jenkins pipeline as code
Mohammad Imran Ansari
 
Continuous Integration using Jenkins with Python
Continuous Integration using Jenkins with PythonContinuous Integration using Jenkins with Python
Continuous Integration using Jenkins with Python
Inexture 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
 
From Virtual Machines to Containers
From Virtual Machines to ContainersFrom Virtual Machines to Containers
From Virtual Machines to Containers
camunda services GmbH
 
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
James Strong
 
Continous Integration.pptx
Continous Integration.pptxContinous Integration.pptx
Continous Integration.pptx
Anuj 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.pdf
MahmoudAlnmr1
 
jenkins.pdf
jenkins.pdfjenkins.pdf
jenkins.pdf
shahidafrith
 
CI/CD
CI/CDCI/CD
CI/CD
AmitDhodi
 
SQL Server DevOps Jumpstart
SQL Server DevOps JumpstartSQL Server DevOps Jumpstart
SQL Server DevOps Jumpstart
Ori Donner
 
Continuous delivery with jenkins pipelines @ devdays
Continuous delivery with jenkins pipelines  @ devdaysContinuous delivery with jenkins pipelines  @ devdays
Continuous delivery with jenkins pipelines @ devdays
Roman 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 applications
Sunil Dalal
 
Jenkins Continuous Delivery
Jenkins Continuous DeliveryJenkins Continuous Delivery
Jenkins Continuous Delivery
Jadson 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).pptx
Pankaj 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#5
Marcin 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 Jenkins
pqrs1234
 

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 Practices
Jadson 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 Java
Jadson 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 Heroku
Jadson Santos
 
Vue.js
Vue.jsVue.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
Jadson Santos
 
Hazelcast Distributed Lock
Hazelcast Distributed LockHazelcast Distributed Lock
Hazelcast Distributed Lock
Jadson Santos
 
Bootstrap
BootstrapBootstrap
Bootstrap
Jadson Santos
 
Testes Unitários
Testes UnitáriosTestes Unitários
Testes Unitários
Jadson Santos
 
Java8
Java8Java8
Gradle
GradleGradle
Git
GitGit
Introdução ao Flyway
Introdução ao FlywayIntrodução ao Flyway
Introdução ao Flyway
Jadson 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 otimizada
Jadson 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 JSF
Jadson Santos
 
ICEIS 2013 Presentation
ICEIS 2013 PresentationICEIS 2013 Presentation
ICEIS 2013 Presentation
Jadson 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

AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
Google
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
AMB-Review
 
Corporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMSCorporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMS
Tendenci - The Open Source AMS (Association Management Software)
 
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.ILBeyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Natan Silnitsky
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Globus
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke
 
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Anthony Dahanne
 
Into the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdfInto the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdf
Ortus Solutions, Corp
 
Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
Cyanic lab
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
Ortus Solutions, Corp
 
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdfEnhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Jay Das
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
Globus
 
RISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent EnterpriseRISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent Enterprise
Srikant77
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Mind IT Systems
 
top nidhi software solution freedownload
top nidhi software solution freedownloadtop nidhi software solution freedownload
top nidhi software solution freedownload
vrstrong314
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
Globus
 
A Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdfA Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdf
kalichargn70th171
 
Graphic Design Crash Course for beginners
Graphic Design Crash Course for beginnersGraphic Design Crash Course for beginners
Graphic Design Crash Course for beginners
e20449
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
Tier1 app
 
GlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote session
Globus
 

Recently uploaded (20)

AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
 
Corporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMSCorporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMS
 
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.ILBeyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
 
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
 
Into the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdfInto the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdf
 
Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
 
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdfEnhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
 
RISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent EnterpriseRISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent Enterprise
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
 
top nidhi software solution freedownload
top nidhi software solution freedownloadtop nidhi software solution freedownload
top nidhi software solution freedownload
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
 
A Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdfA Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdf
 
Graphic Design Crash Course for beginners
Graphic Design Crash Course for beginnersGraphic Design Crash Course for beginners
Graphic Design Crash Course for beginners
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
 
GlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote session
 

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