SlideShare a Scribd company logo
TURNKEY CONTINUOUS
DELIVERY
Gianni Bombelli
bombelli@intre.it
https://github.com/bombix
https://www.linkedin.com/in/gianni-bombelli
Monza, 3 Dicembre 2018
1
EXTREME PROGRAMMING
continuous integration
ten minute build
integration whole team
slack
weekly cycle
monthly cycle
stories
planning
programming
incremental design
test-first programming
primary
energized work
programming
shared code
code &test
s
ingle code base
team continuity
shrinking teams
real customer involvement
root cause analysis
incremental deployment
dailydeployment
pay-per-use
negotiated scope contract
tea
m
business
coro
llary
XP Practices
Turnkey Continuous Delivery
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.
Turnkey Continuous Delivery
3
CONTINUOUS ...
Kofy
Senaya
Director of
Product @
Clearbridge
Mobile
Continuous Delivery is similar to Continuous Integration. You
are building a product that can be released to production at
any time. Continuous Delivery requires building testing, and
releasing faster and more frequently. Continuous Integration
happens before you build as you are testing code. Delivery
means you can release something to the staging
environment or the pre-production environment.
Continuous Delivery is when your code is always ready to be
released but isn’t pushed to production unless you make the
decision to do so. It is a manual step. With Continuous
Deployment, any updated working version of the app is
automatically pushed to production.
Turnkey Continuous Delivery
4
TOOLS
Turnkey Continuous Delivery
5
WHAT DO WE DO NOW?
bootstrap our Continuous Delivery and test environment
configure the tools necessary to manage and build our
software
create our build Continuous Delivery pipeline
develop a simple micro-service
REST server
written in ES6
executed with Node.js
released as a docker image
Turnkey Continuous Delivery
6
REPOSITORIES
Build and Release Infrastructure
Example Project
Remove the remote named origin
Checkout the tag start
Reset master branch to the commit with the start tag
Turnkey Continuous Delivery
https://github.com/bombix/workshop-turnkey
https://github.com/intresrl/microservice-example-hex2hsl
7
INFRASTRUCTURE
Turnkey CD Testing Staging
Turnkey Continuous Delivery
Production
8
INFRASTRUCTURE AS CODE
Turnkey Continuous Delivery
9
WORKFLOW - F.1
Turnkey Continuous Delivery
10 . 1
WORKFLOW - F.2
Turnkey Continuous Delivery
10 . 2
WORKFLOW - F.2 MERGE
Turnkey Continuous Delivery
10 . 3
WORKFLOW - F.1 MERGE
Turnkey Continuous Delivery
10 . 4
BUILD AUTOMATIONPush
P
oll
Checkout Source Code
Static Code Analysis
Build
Test pre-deploy
Build Artifact
Push Artifact to Repo
Deploy & Run
Test post-deploy
Cleanup
Turnkey Continuous Delivery
11
ESERCIZIO 0
Turnkey Continuous Delivery
12 . 1
ESERCIZIO 0
Turnkey Continuous Delivery
12 . 2
ESERCIZIO 1
Turnkey Continuous Delivery
13 . 1
ESERCIZIO 1
Turnkey Continuous Delivery
13 . 2
ESERCIZIO 2
Turnkey Continuous Delivery
14 . 1
ESERCIZIO 2
Turnkey Continuous Delivery
14 . 2
ESERCIZIO 2
Turnkey Continuous Delivery
14 . 3
ESERCIZIO 3
Turnkey Continuous Delivery
15 . 1
ESERCIZIO 3
Turnkey Continuous Delivery
15 . 2
ESERCIZIO 3
Turnkey Continuous Delivery
15 . 3
ESERCIZIO 4
Turnkey Continuous Delivery
16 . 1
ESERCIZIO 4
Turnkey Continuous Delivery
16 . 2
ESERCIZIO 5
Turnkey Continuous Delivery
17 . 1
ESERCIZIO 5
Turnkey Continuous Delivery
17 . 2
ESERCIZIO 5
Turnkey Continuous Delivery
17 . 3
IT'S ENOUGH ?
single shared code-base
automated build & merge different branches
self-testing build
integrate every commit
ten-minutes build & fail fast!
everyone can see what's happening
end-to-end test
automated deployment
test the deployment
test in a production-like environment
Turnkey Continuous Delivery
18
NEXT STEPS ...
Build Artifact
Push to Artifact Repository
Deploy on a test or staging server
Run it
Execute the post-deployment tests
Turnkey Continuous Delivery
19
BUILD ARTIFACT AND PUSH
Turnkey Continuous Delivery
stage('Build Docker Image') {
def container-name = ${pipelineName}-${env.BRANCH_NAME}
sh "docker -H tcp://192.168.50.91:2375 build 
-t 192.168.50.91:5000/${container-name}:${env.BUILD_ID} 
-t 192.168.50.91:5000/${container-name}:latest ."
}
stage('Push to Docker Registry') {
def container-name = ${pipelineName}-${env.BRANCH_NAME}
sh "docker -H tcp://192.168.50.91:2375 
push 192.168.50.91:5000/${container-name}:${env.BUILD_ID}"
sh "docker -H tcp://192.168.50.91:2375 
push 192.168.50.91:5000/${container-name}:latest"
}
20
DEPLOY & RUN
Turnkey Continuous Delivery
stage ('Deploy and Run') {
if (env.BRANCH_NAME == 'master') {
print "Deploy docker container to : staging environmet"
sh "ansible-playbook -i /ansible/inventory/hosts.yml 
/ansible/hex2hsl.yml --limit staging"
} else {
print "Deploy docker container to : testing environmet"
sh "ansible-playbook -i /ansible/inventory/hosts.yml 
--extra-vars 'hex2hsl_branch=${env.BRANCH_NAME} hex2hsl_port=${test_
/ansible/hex2hsl.yml --limit testing"
}
}
21
TEST POST-DEPLOY
Turnkey Continuous Delivery
stage('Test post-deploy') {
def test_url = ''
if (env.BRANCH_NAME == 'master') {
test_url = 'http://192.168.50.93:3100'
} else {
test_url = 'http://192.168.50.92:' + test_port
}
sh "npm run test:post-deploy -- --test_url=${test_url}"
step([$class: 'XUnitBuilder',
thresholds: [[$class: 'FailedThreshold', unstableThreshold: '1']],
tools: [[$class: 'JUnitType',
pattern: 'test-report/test-post-deploy-report.xml']]])
}
}
22
AND NOW, IT'S ENOUGH ?
Regression tests: we always test everything
e2e tests: yes, post-deploy tests runs on staging
Security scans: only dependency audit performed by npm
Performance test: nope!
Deployment test: yes, deploy on staging environment
Turnkey Continuous Delivery
23
24
Special thanks to
Ferdinando Santacroce
@jesuswasrasta
25
26

More Related Content

What's hot

Symfony2 Specification by examples
Symfony2   Specification by examplesSymfony2   Specification by examples
Symfony2 Specification by examples
Corley S.r.l.
 
WebRTC - Brings Real-Time to the Web
WebRTC - Brings Real-Time to the WebWebRTC - Brings Real-Time to the Web
WebRTC - Brings Real-Time to the Web
Vũ Nguyễn
 
Flask
FlaskFlask
Jenkins to Gitlab - Intelligent Build-Pipelines
Jenkins to Gitlab - Intelligent Build-PipelinesJenkins to Gitlab - Intelligent Build-Pipelines
Jenkins to Gitlab - Intelligent Build-Pipelines
Christian Münch
 
Jenkins
JenkinsJenkins
Jenkins
Roger Xia
 
Jenkins
JenkinsJenkins
One click deployment with Jenkins - PHP Munich
One click deployment with Jenkins - PHP MunichOne click deployment with Jenkins - PHP Munich
One click deployment with Jenkins - PHP MunichMayflower GmbH
 
Continuous Integration (Jenkins/Hudson)
Continuous Integration (Jenkins/Hudson)Continuous Integration (Jenkins/Hudson)
Continuous Integration (Jenkins/Hudson)Dennys Hsieh
 
Automate your build on Android with Jenkins
Automate your build on Android with JenkinsAutomate your build on Android with Jenkins
Automate your build on Android with Jenkins
BeMyApp
 
Continuous integration using Bamboo
Continuous integration using BambooContinuous integration using Bamboo
Continuous integration using Bamboo
Tudor Hornai
 
Scale your PHP application with Elastic Beanstalk - CloudParty Genova
Scale your PHP application with Elastic Beanstalk - CloudParty GenovaScale your PHP application with Elastic Beanstalk - CloudParty Genova
Scale your PHP application with Elastic Beanstalk - CloudParty Genova
Corley S.r.l.
 
Git branching-model
Git branching-modelGit branching-model
Git branching-model
Aaron Huang
 
Jenkins introduction
Jenkins introductionJenkins introduction
Jenkins introduction
Gourav Varma
 
Testing Your Code as Part of an Industrial Grade Workflow
Testing Your Code as Part of an Industrial Grade WorkflowTesting Your Code as Part of an Industrial Grade Workflow
Testing Your Code as Part of an Industrial Grade Workflow
Pantheon
 
Exploring the GitHub Service Universe
Exploring the GitHub Service UniverseExploring the GitHub Service Universe
Exploring the GitHub Service Universe
Björn Kimminich
 
Seamless Continuous Deployment Using Docker Containers
Seamless Continuous Deployment Using Docker ContainersSeamless Continuous Deployment Using Docker Containers
Seamless Continuous Deployment Using Docker Containers
Faiz Bashir
 
Setup Build & Deploy with Jenkins CI
Setup Build & Deploy with Jenkins CISetup Build & Deploy with Jenkins CI
Setup Build & Deploy with Jenkins CI
walming
 
Gitlab - Creating C++ applications with Gitlab CI
Gitlab - Creating C++ applications with Gitlab CIGitlab - Creating C++ applications with Gitlab CI
Gitlab - Creating C++ applications with Gitlab CI
Uilian Ries
 
Graphql usage
Graphql usageGraphql usage
Graphql usage
Valentin Buryakov
 

What's hot (20)

Symfony2 Specification by examples
Symfony2   Specification by examplesSymfony2   Specification by examples
Symfony2 Specification by examples
 
WebRTC - Brings Real-Time to the Web
WebRTC - Brings Real-Time to the WebWebRTC - Brings Real-Time to the Web
WebRTC - Brings Real-Time to the Web
 
Flask
FlaskFlask
Flask
 
Jenkins to Gitlab - Intelligent Build-Pipelines
Jenkins to Gitlab - Intelligent Build-PipelinesJenkins to Gitlab - Intelligent Build-Pipelines
Jenkins to Gitlab - Intelligent Build-Pipelines
 
Jenkins
JenkinsJenkins
Jenkins
 
Jenkins
JenkinsJenkins
Jenkins
 
One click deployment with Jenkins - PHP Munich
One click deployment with Jenkins - PHP MunichOne click deployment with Jenkins - PHP Munich
One click deployment with Jenkins - PHP Munich
 
Continuous Integration (Jenkins/Hudson)
Continuous Integration (Jenkins/Hudson)Continuous Integration (Jenkins/Hudson)
Continuous Integration (Jenkins/Hudson)
 
Automate your build on Android with Jenkins
Automate your build on Android with JenkinsAutomate your build on Android with Jenkins
Automate your build on Android with Jenkins
 
Continuous integration using Bamboo
Continuous integration using BambooContinuous integration using Bamboo
Continuous integration using Bamboo
 
Scale your PHP application with Elastic Beanstalk - CloudParty Genova
Scale your PHP application with Elastic Beanstalk - CloudParty GenovaScale your PHP application with Elastic Beanstalk - CloudParty Genova
Scale your PHP application with Elastic Beanstalk - CloudParty Genova
 
Git branching-model
Git branching-modelGit branching-model
Git branching-model
 
Jenkins introduction
Jenkins introductionJenkins introduction
Jenkins introduction
 
Testing Your Code as Part of an Industrial Grade Workflow
Testing Your Code as Part of an Industrial Grade WorkflowTesting Your Code as Part of an Industrial Grade Workflow
Testing Your Code as Part of an Industrial Grade Workflow
 
Exploring the GitHub Service Universe
Exploring the GitHub Service UniverseExploring the GitHub Service Universe
Exploring the GitHub Service Universe
 
Seamless Continuous Deployment Using Docker Containers
Seamless Continuous Deployment Using Docker ContainersSeamless Continuous Deployment Using Docker Containers
Seamless Continuous Deployment Using Docker Containers
 
Setup Build & Deploy with Jenkins CI
Setup Build & Deploy with Jenkins CISetup Build & Deploy with Jenkins CI
Setup Build & Deploy with Jenkins CI
 
Gitlab - Creating C++ applications with Gitlab CI
Gitlab - Creating C++ applications with Gitlab CIGitlab - Creating C++ applications with Gitlab CI
Gitlab - Creating C++ applications with Gitlab CI
 
There is-no-snapshot
There is-no-snapshotThere is-no-snapshot
There is-no-snapshot
 
Graphql usage
Graphql usageGraphql usage
Graphql usage
 

Similar to Turnkey Continuous Delivery

Release with confidence
Release with confidenceRelease with confidence
Release with confidence
John Congdon
 
Continuous integration using jenkins
Continuous integration using jenkinsContinuous integration using jenkins
Continuous integration using jenkins
Vinay H G
 
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
 
GitHub Actions (Nakov at RuseConf, Sept 2022)
GitHub Actions (Nakov at RuseConf, Sept 2022)GitHub Actions (Nakov at RuseConf, Sept 2022)
GitHub Actions (Nakov at RuseConf, Sept 2022)
Svetlin Nakov
 
Continuous Integration & Development with Gitlab
Continuous Integration & Development with GitlabContinuous Integration & Development with Gitlab
Continuous Integration & Development with Gitlab
Ayush Sharma
 
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
Fabrice Bernhard
 
How to set up an ASP.NET 5 Continuous Delivery Pipeline using IBM Bluemix Dev...
How to set up an ASP.NET 5 Continuous Delivery Pipeline using IBM Bluemix Dev...How to set up an ASP.NET 5 Continuous Delivery Pipeline using IBM Bluemix Dev...
How to set up an ASP.NET 5 Continuous Delivery Pipeline using IBM Bluemix Dev...
Richard Johansson
 
Simple tools to fight bigger quality battle
Simple tools to fight bigger quality battleSimple tools to fight bigger quality battle
Simple tools to fight bigger quality battle
Anand Ramdeo
 
Better Operations into the Cloud
Better Operations  into the CloudBetter Operations  into the Cloud
Better Operations into the Cloud
Fabio Ferrari
 
Arquitectura en detalle de una anatomia devops
Arquitectura en detalle de una anatomia devopsArquitectura en detalle de una anatomia devops
Arquitectura en detalle de una anatomia devops
Orlando Chamorro
 
Anatomy of a Continuous Integration and Delivery (CICD) Pipeline
Anatomy of a Continuous Integration and Delivery (CICD) PipelineAnatomy of a Continuous Integration and Delivery (CICD) Pipeline
Anatomy of a Continuous Integration and Delivery (CICD) Pipeline
Robert McDermott
 
Docker for Developers - Part 2 by Borja Burgos and Fernando Mayo
Docker for Developers - Part 2 by Borja Burgos and Fernando MayoDocker for Developers - Part 2 by Borja Burgos and Fernando Mayo
Docker for Developers - Part 2 by Borja Burgos and Fernando Mayo
Docker, Inc.
 
De Zero a Produção - João Jesus
De Zero a Produção - João JesusDe Zero a Produção - João Jesus
De Zero a Produção - João Jesus
Comunidade NetPonto
 
CI CD Jenkins for Swift Deployment
CI CD Jenkins for Swift DeploymentCI CD Jenkins for Swift Deployment
CI CD Jenkins for Swift Deployment
Bintang Thunder
 
Continuous Integration using Cruise Control
Continuous Integration using Cruise ControlContinuous Integration using Cruise Control
Continuous Integration using Cruise Controlelliando dias
 
varun JENKINS.pptx
varun JENKINS.pptxvarun JENKINS.pptx
varun JENKINS.pptx
VgPolampalli
 
TMF2014 CI-CD Workshop Michael Palotas
TMF2014 CI-CD Workshop Michael PalotasTMF2014 CI-CD Workshop Michael Palotas
TMF2014 CI-CD Workshop Michael Palotas
KJR
 
Agile Bodensee - Testautomation & Continuous Delivery Workshop
Agile Bodensee - Testautomation & Continuous Delivery WorkshopAgile Bodensee - Testautomation & Continuous Delivery Workshop
Agile Bodensee - Testautomation & Continuous Delivery Workshop
Michael Palotas
 
Visual Studio 2017 Launch Event
Visual Studio 2017 Launch EventVisual Studio 2017 Launch Event
Visual Studio 2017 Launch Event
James Montemagno
 
Modern Release Engineering in a Nutshell - Why Researchers should Care!
Modern Release Engineering in a Nutshell - Why Researchers should Care!Modern Release Engineering in a Nutshell - Why Researchers should Care!
Modern Release Engineering in a Nutshell - Why Researchers should Care!
Bram Adams
 

Similar to Turnkey Continuous Delivery (20)

Release with confidence
Release with confidenceRelease with confidence
Release with confidence
 
Continuous integration using jenkins
Continuous integration using jenkinsContinuous integration using jenkins
Continuous integration using jenkins
 
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
 
GitHub Actions (Nakov at RuseConf, Sept 2022)
GitHub Actions (Nakov at RuseConf, Sept 2022)GitHub Actions (Nakov at RuseConf, Sept 2022)
GitHub Actions (Nakov at RuseConf, Sept 2022)
 
Continuous Integration & Development with Gitlab
Continuous Integration & Development with GitlabContinuous Integration & Development with Gitlab
Continuous Integration & Development with Gitlab
 
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
 
How to set up an ASP.NET 5 Continuous Delivery Pipeline using IBM Bluemix Dev...
How to set up an ASP.NET 5 Continuous Delivery Pipeline using IBM Bluemix Dev...How to set up an ASP.NET 5 Continuous Delivery Pipeline using IBM Bluemix Dev...
How to set up an ASP.NET 5 Continuous Delivery Pipeline using IBM Bluemix Dev...
 
Simple tools to fight bigger quality battle
Simple tools to fight bigger quality battleSimple tools to fight bigger quality battle
Simple tools to fight bigger quality battle
 
Better Operations into the Cloud
Better Operations  into the CloudBetter Operations  into the Cloud
Better Operations into the Cloud
 
Arquitectura en detalle de una anatomia devops
Arquitectura en detalle de una anatomia devopsArquitectura en detalle de una anatomia devops
Arquitectura en detalle de una anatomia devops
 
Anatomy of a Continuous Integration and Delivery (CICD) Pipeline
Anatomy of a Continuous Integration and Delivery (CICD) PipelineAnatomy of a Continuous Integration and Delivery (CICD) Pipeline
Anatomy of a Continuous Integration and Delivery (CICD) Pipeline
 
Docker for Developers - Part 2 by Borja Burgos and Fernando Mayo
Docker for Developers - Part 2 by Borja Burgos and Fernando MayoDocker for Developers - Part 2 by Borja Burgos and Fernando Mayo
Docker for Developers - Part 2 by Borja Burgos and Fernando Mayo
 
De Zero a Produção - João Jesus
De Zero a Produção - João JesusDe Zero a Produção - João Jesus
De Zero a Produção - João Jesus
 
CI CD Jenkins for Swift Deployment
CI CD Jenkins for Swift DeploymentCI CD Jenkins for Swift Deployment
CI CD Jenkins for Swift Deployment
 
Continuous Integration using Cruise Control
Continuous Integration using Cruise ControlContinuous Integration using Cruise Control
Continuous Integration using Cruise Control
 
varun JENKINS.pptx
varun JENKINS.pptxvarun JENKINS.pptx
varun JENKINS.pptx
 
TMF2014 CI-CD Workshop Michael Palotas
TMF2014 CI-CD Workshop Michael PalotasTMF2014 CI-CD Workshop Michael Palotas
TMF2014 CI-CD Workshop Michael Palotas
 
Agile Bodensee - Testautomation & Continuous Delivery Workshop
Agile Bodensee - Testautomation & Continuous Delivery WorkshopAgile Bodensee - Testautomation & Continuous Delivery Workshop
Agile Bodensee - Testautomation & Continuous Delivery Workshop
 
Visual Studio 2017 Launch Event
Visual Studio 2017 Launch EventVisual Studio 2017 Launch Event
Visual Studio 2017 Launch Event
 
Modern Release Engineering in a Nutshell - Why Researchers should Care!
Modern Release Engineering in a Nutshell - Why Researchers should Care!Modern Release Engineering in a Nutshell - Why Researchers should Care!
Modern Release Engineering in a Nutshell - Why Researchers should Care!
 

Recently uploaded

Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
Paco van Beckhoven
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
Globus
 
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
 
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Shahin Sheidaei
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
Globus
 
Visitor Management System in India- Vizman.app
Visitor Management System in India- Vizman.appVisitor Management System in India- Vizman.app
Visitor Management System in India- Vizman.app
NaapbooksPrivateLimi
 
Designing for Privacy in Amazon Web Services
Designing for Privacy in Amazon Web ServicesDesigning for Privacy in Amazon Web Services
Designing for Privacy in Amazon Web Services
KrzysztofKkol1
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
WSO2
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
Tier1 app
 
Advanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should KnowAdvanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should Know
Peter Caitens
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
Georgi Kodinov
 
Explore Modern SharePoint Templates for 2024
Explore Modern SharePoint Templates for 2024Explore Modern SharePoint Templates for 2024
Explore Modern SharePoint Templates for 2024
Sharepoint Designs
 
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar
 
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
 
Strategies for Successful Data Migration Tools.pptx
Strategies for Successful Data Migration Tools.pptxStrategies for Successful Data Migration Tools.pptx
Strategies for Successful Data Migration Tools.pptx
varshanayak241
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
Globus
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2
 
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)
 
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
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
informapgpstrackings
 

Recently uploaded (20)

Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
 
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...
 
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
 
Visitor Management System in India- Vizman.app
Visitor Management System in India- Vizman.appVisitor Management System in India- Vizman.app
Visitor Management System in India- Vizman.app
 
Designing for Privacy in Amazon Web Services
Designing for Privacy in Amazon Web ServicesDesigning for Privacy in Amazon Web Services
Designing for Privacy in Amazon Web Services
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
 
Advanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should KnowAdvanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should Know
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
 
Explore Modern SharePoint Templates for 2024
Explore Modern SharePoint Templates for 2024Explore Modern SharePoint Templates for 2024
Explore Modern SharePoint Templates for 2024
 
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBroker
 
Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
 
Strategies for Successful Data Migration Tools.pptx
Strategies for Successful Data Migration Tools.pptxStrategies for Successful Data Migration Tools.pptx
Strategies for Successful Data Migration Tools.pptx
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
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
 
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
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
 

Turnkey Continuous Delivery

  • 2. EXTREME PROGRAMMING continuous integration ten minute build integration whole team slack weekly cycle monthly cycle stories planning programming incremental design test-first programming primary energized work programming shared code code &test s ingle code base team continuity shrinking teams real customer involvement root cause analysis incremental deployment dailydeployment pay-per-use negotiated scope contract tea m business coro llary XP Practices Turnkey Continuous Delivery 2
  • 3. 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. Turnkey Continuous Delivery 3
  • 4. CONTINUOUS ... Kofy Senaya Director of Product @ Clearbridge Mobile Continuous Delivery is similar to Continuous Integration. You are building a product that can be released to production at any time. Continuous Delivery requires building testing, and releasing faster and more frequently. Continuous Integration happens before you build as you are testing code. Delivery means you can release something to the staging environment or the pre-production environment. Continuous Delivery is when your code is always ready to be released but isn’t pushed to production unless you make the decision to do so. It is a manual step. With Continuous Deployment, any updated working version of the app is automatically pushed to production. Turnkey Continuous Delivery 4
  • 6. WHAT DO WE DO NOW? bootstrap our Continuous Delivery and test environment configure the tools necessary to manage and build our software create our build Continuous Delivery pipeline develop a simple micro-service REST server written in ES6 executed with Node.js released as a docker image Turnkey Continuous Delivery 6
  • 7. REPOSITORIES Build and Release Infrastructure Example Project Remove the remote named origin Checkout the tag start Reset master branch to the commit with the start tag Turnkey Continuous Delivery https://github.com/bombix/workshop-turnkey https://github.com/intresrl/microservice-example-hex2hsl 7
  • 8. INFRASTRUCTURE Turnkey CD Testing Staging Turnkey Continuous Delivery Production 8
  • 9. INFRASTRUCTURE AS CODE Turnkey Continuous Delivery 9
  • 10. WORKFLOW - F.1 Turnkey Continuous Delivery 10 . 1
  • 11. WORKFLOW - F.2 Turnkey Continuous Delivery 10 . 2
  • 12. WORKFLOW - F.2 MERGE Turnkey Continuous Delivery 10 . 3
  • 13. WORKFLOW - F.1 MERGE Turnkey Continuous Delivery 10 . 4
  • 14. BUILD AUTOMATIONPush P oll Checkout Source Code Static Code Analysis Build Test pre-deploy Build Artifact Push Artifact to Repo Deploy & Run Test post-deploy Cleanup Turnkey Continuous Delivery 11
  • 30. IT'S ENOUGH ? single shared code-base automated build & merge different branches self-testing build integrate every commit ten-minutes build & fail fast! everyone can see what's happening end-to-end test automated deployment test the deployment test in a production-like environment Turnkey Continuous Delivery 18
  • 31. NEXT STEPS ... Build Artifact Push to Artifact Repository Deploy on a test or staging server Run it Execute the post-deployment tests Turnkey Continuous Delivery 19
  • 32. BUILD ARTIFACT AND PUSH Turnkey Continuous Delivery stage('Build Docker Image') { def container-name = ${pipelineName}-${env.BRANCH_NAME} sh "docker -H tcp://192.168.50.91:2375 build -t 192.168.50.91:5000/${container-name}:${env.BUILD_ID} -t 192.168.50.91:5000/${container-name}:latest ." } stage('Push to Docker Registry') { def container-name = ${pipelineName}-${env.BRANCH_NAME} sh "docker -H tcp://192.168.50.91:2375 push 192.168.50.91:5000/${container-name}:${env.BUILD_ID}" sh "docker -H tcp://192.168.50.91:2375 push 192.168.50.91:5000/${container-name}:latest" } 20
  • 33. DEPLOY & RUN Turnkey Continuous Delivery stage ('Deploy and Run') { if (env.BRANCH_NAME == 'master') { print "Deploy docker container to : staging environmet" sh "ansible-playbook -i /ansible/inventory/hosts.yml /ansible/hex2hsl.yml --limit staging" } else { print "Deploy docker container to : testing environmet" sh "ansible-playbook -i /ansible/inventory/hosts.yml --extra-vars 'hex2hsl_branch=${env.BRANCH_NAME} hex2hsl_port=${test_ /ansible/hex2hsl.yml --limit testing" } } 21
  • 34. TEST POST-DEPLOY Turnkey Continuous Delivery stage('Test post-deploy') { def test_url = '' if (env.BRANCH_NAME == 'master') { test_url = 'http://192.168.50.93:3100' } else { test_url = 'http://192.168.50.92:' + test_port } sh "npm run test:post-deploy -- --test_url=${test_url}" step([$class: 'XUnitBuilder', thresholds: [[$class: 'FailedThreshold', unstableThreshold: '1']], tools: [[$class: 'JUnitType', pattern: 'test-report/test-post-deploy-report.xml']]]) } } 22
  • 35. AND NOW, IT'S ENOUGH ? Regression tests: we always test everything e2e tests: yes, post-deploy tests runs on staging Security scans: only dependency audit performed by npm Performance test: nope! Deployment test: yes, deploy on staging environment Turnkey Continuous Delivery 23
  • 36. 24
  • 37. Special thanks to Ferdinando Santacroce @jesuswasrasta 25
  • 38. 26