SlideShare a Scribd company logo
Smarter Deployments with
Octopus Deploy
Thibaud Gravrand
Thibaud Gravrand
• .Net Developer for 7 years
• R&D Manager for Netsize, a Gemalto Company
• http://fr.linkedin.com/in/tgravrand
• https://twitter.com/dolomitt
How did we deploy before ?
• Let’s go for a simple xcopy – why should I need more than that ?
• Some zips here and there
• Attempt of deployment from CI ?
But there are inconvenients
• I think my script will not work in production but let’s try !
• When did we release the last version ?
• I think we did not deliver the same version…
• I forgot one dll, I’ll just add it quickly without being noticed
Let’s write down how we like our
deployments
• Should be a repeatable process
• Should be fully automated
• Should support strong versioning
• Should tackle complex distributed deployments
• Should not forget what we did, who did it and when
• Should take care of development and production environments
• Should allow responsabilities split between teams
• Should be fast !!
Octopus Deploy
• Developed by Paul Stovell since 2011
• Dedicated solution for Windows Platforms
• Heavily relies on nuget package software
Architecture
• Nuget Repository
• Built-in or external
• Central Server
• Relies on RavenDB
• Tentacles (slaves)
How does it work ?
Broken down in 7 Steps
Step 1 – Declare Environment
• Declare Machines
• Associate Environment and Role
• Typical Environments
• DEV, INT, QA, STAGE, UAT, PREPROD, PROD
• Typical Roles
• Front End, Back End FrontEndFrontEnd
BackEndBackEnd
Asymetric Setup
BackEndBackEnd
FrontEndFrontEnd
DEV
BackEndBackEnd
FrontEndFrontEnd
PROD
BackEndBackEnd BackEndBackEnd
FrontEndFrontEndFrontEndFrontEnd
BackEndBackEnd
FrontEndFrontEnd
UAT
Step 2 - Create Package of your application
• Simply add OctoPack Nuget Package to your projects
• Publish Package to Nuget Repository
• Either built-in or external Nuget Repo
• Typically pushed from TeamCity, Jenkins and other CI
• Supported types of projects
• Web Application
• Windows Service
• Windows Executable
Step 3 – Create Project in Octopus Deploy
• Describe your project quickly
• Define Versioning Policy
• Arbitrary & Incremental
• From Main Nuget Package Version
• Define Deployment Policy
• Copy missing or all packages to tentacles
Step 4 – Create Deployment Process
• Describe each step of deployment for your application / solution
• Heavily relies on Powershell 2.0
• Steps can be :
• Setup IIS Site
• Run executable
• Run Powershell Script
• Customize Configuration
• Approval Flow (Email)
• Steps can be run in parallel
Step 5 – Define Variables
• Describe variables for each environment
• Variables are associated to scopes and will be evaluated at deployment
time
• Configuration Files will be transformed according to variable values
• Scopes can be linked to :
• Environment
• Machine
• Step number
Example of Variable Definitions
Variable Value Scope
DatabaseServer dev028db DEV
DatabaseServer qa028db QA
DatabaseServer Prod028db1 PROD;Machine1
DatabaseServer Prod028db2 PROD;Machine2
DNS dev.octopus.com DEV
DNS qa.octopus.com QA
DNS www1.octopus.com PROD;Machine1
DNS www2.octopus.com PROD;Machine2
Step 6 – Create Release
• Creating a release will make a snapshot of :
• Variables
• Steps
• Powershell Scripts
• Package References
• Release can be based on several nupkg files
Example of Release Content
Step 7 – Deploy Release
• Choose a release
• Choose an environment
• Deploy !
• Each step is being executed sequentially
• Configuration Files are being transformed
• Web.Config Transform Feature similar to Visual Studio
• Key Value Replacement
Deployment against Environments
BackEndBackEnd
FrontEndFrontEnd
DEV
BackEndBackEnd
FrontEndFrontEnd
PROD
BackEndBackEnd BackEndBackEnd
FrontEndFrontEndFrontEndFrontEnd
BackEndBackEnd
FrontEndFrontEnd
UAT
Deployment Patterns
• Rolling deployments
• Canary deployments
• Blue-green deployments
• Isolated Octopus Deploy servers
How to integrate into your build
pipeline ?
How to integrate into your build pipeline ?
Flavor of Continuous Delivery
Build Run Unit Tests Deploy to DEV
Run Sanity
Check
Promote to
INT
Run Full
Integration
Tests
Promote to QA
Run Manual
Tests
Promote to
PROD
Some drawbacks
• Manual Rollbacks
• One instance of a project on a tentacle client
• Packages limited to 10 megabytes
• Might be difficult to handle exotic configuration files
Features - Last but not least
• Full Audit Log
• Strong REST API
• Nuget Repository
• Retention Policies
• Permission Model
• Lifecycle Management
• Azure Deployments
• Scheduled Deployments
Advanced Scenarios
• Let’s talk to Nagios or OP/5 to tell them I’m updating some services
• Let’s deploy in PCI-DSS environments
Roadmap
• Linux Deployments through SSH
• Remote Delta Compression
• Offline Deployment
• Replace RavenDB with SQL Server
Resources
• https://demo.octopusdeploy.com/app
• DotNetRocks, episode 1002: Interview with Paul about Octopus
Deploy.
• DotNetRocks, episode 966: Nick discusses structured logging, with an
overview of Octopus at the start.
• Herding Code, episode 143: Paul Stack discusses continuous
integration, and mentions Octopus at 20:23. Scott talks about his
experiences with Octopus.
Thank you !

More Related Content

What's hot

devops
devops devops
DevOps
DevOps DevOps
DevOps
ARYA TM
 
DevOps introduction
DevOps introductionDevOps introduction
DevOps introduction
Mettje Heegstra
 
What is DevOps | DevOps Introduction | DevOps Training | DevOps Tutorial | Ed...
What is DevOps | DevOps Introduction | DevOps Training | DevOps Tutorial | Ed...What is DevOps | DevOps Introduction | DevOps Training | DevOps Tutorial | Ed...
What is DevOps | DevOps Introduction | DevOps Training | DevOps Tutorial | Ed...
Edureka!
 
GitOps with ArgoCD
GitOps with ArgoCDGitOps with ArgoCD
GitOps with ArgoCD
CloudOps2005
 
Dev ops != Dev+Ops
Dev ops != Dev+OpsDev ops != Dev+Ops
Dev ops != Dev+Ops
Shalu Ahuja
 
Introduction to devops
Introduction to devopsIntroduction to devops
Introduction to devops
UtpalenduChakrobortt1
 
Kubernetes Deployment Tutorial | Kubernetes Tutorial For Beginners | Kubernet...
Kubernetes Deployment Tutorial | Kubernetes Tutorial For Beginners | Kubernet...Kubernetes Deployment Tutorial | Kubernetes Tutorial For Beginners | Kubernet...
Kubernetes Deployment Tutorial | Kubernetes Tutorial For Beginners | Kubernet...
Edureka!
 
DevOps introduction
DevOps introductionDevOps introduction
DevOps introduction
Sridhara T V
 
Build CICD Pipeline for Container Presentation Slides
Build CICD Pipeline for Container Presentation SlidesBuild CICD Pipeline for Container Presentation Slides
Build CICD Pipeline for Container Presentation Slides
Amazon Web Services
 
Jenkins Overview
Jenkins OverviewJenkins Overview
Jenkins Overview
Ahmed M. Gomaa
 
ArgoCD Meetup PPT final.pdf
ArgoCD Meetup PPT final.pdfArgoCD Meetup PPT final.pdf
ArgoCD Meetup PPT final.pdf
amanmakwana3
 
Gitlab, GitOps & ArgoCD
Gitlab, GitOps & ArgoCDGitlab, GitOps & ArgoCD
Gitlab, GitOps & ArgoCD
Haggai Philip Zagury
 
Jenkins tutorial
Jenkins tutorialJenkins tutorial
Jenkins tutorial
Mamun Rashid, CCDH
 
Introduction to container based virtualization with docker
Introduction to container based virtualization with dockerIntroduction to container based virtualization with docker
Introduction to container based virtualization with docker
Bangladesh Network Operators Group
 
Introduction of cloud native CI/CD on kubernetes
Introduction of cloud native CI/CD on kubernetesIntroduction of cloud native CI/CD on kubernetes
Introduction of cloud native CI/CD on kubernetes
Kyohei Mizumoto
 
Jenkins presentation
Jenkins presentationJenkins presentation
Jenkins presentation
Valentin Buryakov
 
Functional Tests Automation with Robot Framework
Functional Tests Automation with Robot FrameworkFunctional Tests Automation with Robot Framework
Functional Tests Automation with Robot Framework
laurent bristiel
 
DevOps - A Gentle Introduction
DevOps - A Gentle IntroductionDevOps - A Gentle Introduction
DevOps - A Gentle Introduction
CodeOps Technologies LLP
 
DevOps
DevOpsDevOps

What's hot (20)

devops
devops devops
devops
 
DevOps
DevOps DevOps
DevOps
 
DevOps introduction
DevOps introductionDevOps introduction
DevOps introduction
 
What is DevOps | DevOps Introduction | DevOps Training | DevOps Tutorial | Ed...
What is DevOps | DevOps Introduction | DevOps Training | DevOps Tutorial | Ed...What is DevOps | DevOps Introduction | DevOps Training | DevOps Tutorial | Ed...
What is DevOps | DevOps Introduction | DevOps Training | DevOps Tutorial | Ed...
 
GitOps with ArgoCD
GitOps with ArgoCDGitOps with ArgoCD
GitOps with ArgoCD
 
Dev ops != Dev+Ops
Dev ops != Dev+OpsDev ops != Dev+Ops
Dev ops != Dev+Ops
 
Introduction to devops
Introduction to devopsIntroduction to devops
Introduction to devops
 
Kubernetes Deployment Tutorial | Kubernetes Tutorial For Beginners | Kubernet...
Kubernetes Deployment Tutorial | Kubernetes Tutorial For Beginners | Kubernet...Kubernetes Deployment Tutorial | Kubernetes Tutorial For Beginners | Kubernet...
Kubernetes Deployment Tutorial | Kubernetes Tutorial For Beginners | Kubernet...
 
DevOps introduction
DevOps introductionDevOps introduction
DevOps introduction
 
Build CICD Pipeline for Container Presentation Slides
Build CICD Pipeline for Container Presentation SlidesBuild CICD Pipeline for Container Presentation Slides
Build CICD Pipeline for Container Presentation Slides
 
Jenkins Overview
Jenkins OverviewJenkins Overview
Jenkins Overview
 
ArgoCD Meetup PPT final.pdf
ArgoCD Meetup PPT final.pdfArgoCD Meetup PPT final.pdf
ArgoCD Meetup PPT final.pdf
 
Gitlab, GitOps & ArgoCD
Gitlab, GitOps & ArgoCDGitlab, GitOps & ArgoCD
Gitlab, GitOps & ArgoCD
 
Jenkins tutorial
Jenkins tutorialJenkins tutorial
Jenkins tutorial
 
Introduction to container based virtualization with docker
Introduction to container based virtualization with dockerIntroduction to container based virtualization with docker
Introduction to container based virtualization with docker
 
Introduction of cloud native CI/CD on kubernetes
Introduction of cloud native CI/CD on kubernetesIntroduction of cloud native CI/CD on kubernetes
Introduction of cloud native CI/CD on kubernetes
 
Jenkins presentation
Jenkins presentationJenkins presentation
Jenkins presentation
 
Functional Tests Automation with Robot Framework
Functional Tests Automation with Robot FrameworkFunctional Tests Automation with Robot Framework
Functional Tests Automation with Robot Framework
 
DevOps - A Gentle Introduction
DevOps - A Gentle IntroductionDevOps - A Gentle Introduction
DevOps - A Gentle Introduction
 
DevOps
DevOpsDevOps
DevOps
 

Viewers also liked

Deploy Automatizado usando Octopus
Deploy Automatizado usando OctopusDeploy Automatizado usando Octopus
Deploy Automatizado usando Octopus
André Minelli
 
dotnetsheff: Continuous delivery with Team City and Octopus Deploy
dotnetsheff: Continuous delivery with Team City and Octopus Deploydotnetsheff: Continuous delivery with Team City and Octopus Deploy
dotnetsheff: Continuous delivery with Team City and Octopus Deploy
Kevin Kuszyk
 
Deployment taken seriously with Octopus Deploy and TeamCity
Deployment taken seriously with Octopus Deploy and TeamCityDeployment taken seriously with Octopus Deploy and TeamCity
Deployment taken seriously with Octopus Deploy and TeamCity
Tomas Jansson
 
Анатолий Кулаков «Octopus Deploy во имя добра»
Анатолий Кулаков «Octopus Deploy во имя добра»Анатолий Кулаков «Octopus Deploy во имя добра»
Анатолий Кулаков «Octopus Deploy во имя добра»
SpbDotNet Community
 
Making of Octopus Deploy - DDD Melbourne 2015
Making of Octopus Deploy - DDD Melbourne 2015Making of Octopus Deploy - DDD Melbourne 2015
Making of Octopus Deploy - DDD Melbourne 2015
octopusdeploy
 
Octopus Deploy Tech Fest 2014
Octopus Deploy Tech Fest 2014Octopus Deploy Tech Fest 2014
Octopus Deploy Tech Fest 2014
adriantwright
 
Octopus Deploy and how to stop deploying like an idiot
Octopus Deploy and how to stop deploying like an idiotOctopus Deploy and how to stop deploying like an idiot
Octopus Deploy and how to stop deploying like an idiot
damovisa
 
Paul Allen's Octopus
Paul Allen's OctopusPaul Allen's Octopus
Paul Allen's Octopus
Daryll McDade
 

Viewers also liked (8)

Deploy Automatizado usando Octopus
Deploy Automatizado usando OctopusDeploy Automatizado usando Octopus
Deploy Automatizado usando Octopus
 
dotnetsheff: Continuous delivery with Team City and Octopus Deploy
dotnetsheff: Continuous delivery with Team City and Octopus Deploydotnetsheff: Continuous delivery with Team City and Octopus Deploy
dotnetsheff: Continuous delivery with Team City and Octopus Deploy
 
Deployment taken seriously with Octopus Deploy and TeamCity
Deployment taken seriously with Octopus Deploy and TeamCityDeployment taken seriously with Octopus Deploy and TeamCity
Deployment taken seriously with Octopus Deploy and TeamCity
 
Анатолий Кулаков «Octopus Deploy во имя добра»
Анатолий Кулаков «Octopus Deploy во имя добра»Анатолий Кулаков «Octopus Deploy во имя добра»
Анатолий Кулаков «Octopus Deploy во имя добра»
 
Making of Octopus Deploy - DDD Melbourne 2015
Making of Octopus Deploy - DDD Melbourne 2015Making of Octopus Deploy - DDD Melbourne 2015
Making of Octopus Deploy - DDD Melbourne 2015
 
Octopus Deploy Tech Fest 2014
Octopus Deploy Tech Fest 2014Octopus Deploy Tech Fest 2014
Octopus Deploy Tech Fest 2014
 
Octopus Deploy and how to stop deploying like an idiot
Octopus Deploy and how to stop deploying like an idiotOctopus Deploy and how to stop deploying like an idiot
Octopus Deploy and how to stop deploying like an idiot
 
Paul Allen's Octopus
Paul Allen's OctopusPaul Allen's Octopus
Paul Allen's Octopus
 

Similar to Smarter deployments with octopus deploy

Deploying software at Scale
Deploying software at ScaleDeploying software at Scale
Deploying software at Scale
Kris Buytaert
 
Production Ready WordPress #WPLDN
Production Ready WordPress #WPLDNProduction Ready WordPress #WPLDN
Production Ready WordPress #WPLDN
Edmund Turbin
 
Introduction to jenkins
Introduction to jenkinsIntroduction to jenkins
Introduction to jenkins
Abe Diaz
 
Production Ready WordPress - WC Utrecht 2017
Production Ready WordPress  - WC Utrecht 2017Production Ready WordPress  - WC Utrecht 2017
Production Ready WordPress - WC Utrecht 2017
Edmund Turbin
 
Deploying your SaaS stack OnPrem
Deploying your SaaS stack OnPremDeploying your SaaS stack OnPrem
Deploying your SaaS stack OnPrem
Kris Buytaert
 
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
Michael Lihs
 
Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®
Hannes Lowette
 
Fluo CICD OpenStack Summit
Fluo CICD OpenStack SummitFluo CICD OpenStack Summit
Fluo CICD OpenStack Summit
Miguel Zuniga
 
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
Lean IT Consulting
 
Make It Cooler: Using Decentralized Version Control
Make It Cooler: Using Decentralized Version ControlMake It Cooler: Using Decentralized Version Control
Make It Cooler: Using Decentralized Version Control
indiver
 
Production ready word press
Production ready word pressProduction ready word press
Production ready word press
Edmund Turbin
 
Docker for everything
Docker for everythingDocker for everything
Docker for everything
Tim Haak
 
CI/CD with Azure DevOps and Azure Databricks
CI/CD with Azure DevOps and Azure DatabricksCI/CD with Azure DevOps and Azure Databricks
CI/CD with Azure DevOps and Azure Databricks
GoDataDriven
 
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's WorkbenchAugust Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
Howard Greenberg
 
How bigtop leveraged docker for build automation and one click hadoop provis...
How bigtop leveraged docker for build automation and  one click hadoop provis...How bigtop leveraged docker for build automation and  one click hadoop provis...
How bigtop leveraged docker for build automation and one click hadoop provis...
Evans Ye
 
Docker based-Pipelines with Codefresh
Docker based-Pipelines with CodefreshDocker based-Pipelines with Codefresh
Docker based-Pipelines with Codefresh
Codefresh
 
Getting to Walk with DevOps
Getting to Walk with DevOpsGetting to Walk with DevOps
Getting to Walk with DevOps
Eklove Mohan
 
Vagrant for Effective DevOps Culture
Vagrant for Effective DevOps CultureVagrant for Effective DevOps Culture
Vagrant for Effective DevOps Culture
Vaidik Kapoor
 
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
E. Camden Fisher
 
Continuous Development Pipeline
Continuous Development PipelineContinuous Development Pipeline
Continuous Development Pipeline
Izzet Mustafaiev
 

Similar to Smarter deployments with octopus deploy (20)

Deploying software at Scale
Deploying software at ScaleDeploying software at Scale
Deploying software at Scale
 
Production Ready WordPress #WPLDN
Production Ready WordPress #WPLDNProduction Ready WordPress #WPLDN
Production Ready WordPress #WPLDN
 
Introduction to jenkins
Introduction to jenkinsIntroduction to jenkins
Introduction to jenkins
 
Production Ready WordPress - WC Utrecht 2017
Production Ready WordPress  - WC Utrecht 2017Production Ready WordPress  - WC Utrecht 2017
Production Ready WordPress - WC Utrecht 2017
 
Deploying your SaaS stack OnPrem
Deploying your SaaS stack OnPremDeploying your SaaS stack OnPrem
Deploying your SaaS stack OnPrem
 
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
 
Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®
 
Fluo CICD OpenStack Summit
Fluo CICD OpenStack SummitFluo CICD OpenStack Summit
Fluo CICD OpenStack Summit
 
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
 
Make It Cooler: Using Decentralized Version Control
Make It Cooler: Using Decentralized Version ControlMake It Cooler: Using Decentralized Version Control
Make It Cooler: Using Decentralized Version Control
 
Production ready word press
Production ready word pressProduction ready word press
Production ready word press
 
Docker for everything
Docker for everythingDocker for everything
Docker for everything
 
CI/CD with Azure DevOps and Azure Databricks
CI/CD with Azure DevOps and Azure DatabricksCI/CD with Azure DevOps and Azure Databricks
CI/CD with Azure DevOps and Azure Databricks
 
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's WorkbenchAugust Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
 
How bigtop leveraged docker for build automation and one click hadoop provis...
How bigtop leveraged docker for build automation and  one click hadoop provis...How bigtop leveraged docker for build automation and  one click hadoop provis...
How bigtop leveraged docker for build automation and one click hadoop provis...
 
Docker based-Pipelines with Codefresh
Docker based-Pipelines with CodefreshDocker based-Pipelines with Codefresh
Docker based-Pipelines with Codefresh
 
Getting to Walk with DevOps
Getting to Walk with DevOpsGetting to Walk with DevOps
Getting to Walk with DevOps
 
Vagrant for Effective DevOps Culture
Vagrant for Effective DevOps CultureVagrant for Effective DevOps Culture
Vagrant for Effective DevOps Culture
 
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
 
Continuous Development Pipeline
Continuous Development PipelineContinuous Development Pipeline
Continuous Development Pipeline
 

Recently uploaded

Mobile app Development Services | Drona Infotech
Mobile app Development Services  | Drona InfotechMobile app Development Services  | Drona Infotech
Mobile app Development Services | Drona Infotech
Drona Infotech
 
What next after learning python programming basics
What next after learning python programming basicsWhat next after learning python programming basics
What next after learning python programming basics
Rakesh Kumar R
 
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
mz5nrf0n
 
WWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders AustinWWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders Austin
Patrick Weigel
 
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdfTop Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
VALiNTRY360
 
Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
Rakesh Kumar R
 
一比一原版(USF毕业证)旧金山大学毕业证如何办理
一比一原版(USF毕业证)旧金山大学毕业证如何办理一比一原版(USF毕业证)旧金山大学毕业证如何办理
一比一原版(USF毕业证)旧金山大学毕业证如何办理
dakas1
 
socradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdfsocradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdf
SOCRadar
 
Top 9 Trends in Cybersecurity for 2024.pptx
Top 9 Trends in Cybersecurity for 2024.pptxTop 9 Trends in Cybersecurity for 2024.pptx
Top 9 Trends in Cybersecurity for 2024.pptx
devvsandy
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Łukasz Chruściel
 
Microservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we workMicroservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we work
Sven Peters
 
Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !
Marcin Chrost
 
Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
Octavian Nadolu
 
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
XfilesPro
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
Ayan Halder
 
All you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVMAll you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVM
Alina Yurenko
 
Oracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptxOracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptx
Remote DBA Services
 
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, FactsALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
Green Software Development
 
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
kalichargn70th171
 
Using Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query PerformanceUsing Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query Performance
Grant Fritchey
 

Recently uploaded (20)

Mobile app Development Services | Drona Infotech
Mobile app Development Services  | Drona InfotechMobile app Development Services  | Drona Infotech
Mobile app Development Services | Drona Infotech
 
What next after learning python programming basics
What next after learning python programming basicsWhat next after learning python programming basics
What next after learning python programming basics
 
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
 
WWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders AustinWWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders Austin
 
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdfTop Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
 
Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
 
一比一原版(USF毕业证)旧金山大学毕业证如何办理
一比一原版(USF毕业证)旧金山大学毕业证如何办理一比一原版(USF毕业证)旧金山大学毕业证如何办理
一比一原版(USF毕业证)旧金山大学毕业证如何办理
 
socradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdfsocradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdf
 
Top 9 Trends in Cybersecurity for 2024.pptx
Top 9 Trends in Cybersecurity for 2024.pptxTop 9 Trends in Cybersecurity for 2024.pptx
Top 9 Trends in Cybersecurity for 2024.pptx
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
 
Microservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we workMicroservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we work
 
Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !
 
Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
 
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
 
All you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVMAll you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVM
 
Oracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptxOracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptx
 
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, FactsALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
 
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
 
Using Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query PerformanceUsing Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query Performance
 

Smarter deployments with octopus deploy

  • 1. Smarter Deployments with Octopus Deploy Thibaud Gravrand
  • 2. Thibaud Gravrand • .Net Developer for 7 years • R&D Manager for Netsize, a Gemalto Company • http://fr.linkedin.com/in/tgravrand • https://twitter.com/dolomitt
  • 3. How did we deploy before ? • Let’s go for a simple xcopy – why should I need more than that ? • Some zips here and there • Attempt of deployment from CI ?
  • 4. But there are inconvenients • I think my script will not work in production but let’s try ! • When did we release the last version ? • I think we did not deliver the same version… • I forgot one dll, I’ll just add it quickly without being noticed
  • 5. Let’s write down how we like our deployments • Should be a repeatable process • Should be fully automated • Should support strong versioning • Should tackle complex distributed deployments • Should not forget what we did, who did it and when • Should take care of development and production environments • Should allow responsabilities split between teams • Should be fast !!
  • 6. Octopus Deploy • Developed by Paul Stovell since 2011 • Dedicated solution for Windows Platforms • Heavily relies on nuget package software
  • 7. Architecture • Nuget Repository • Built-in or external • Central Server • Relies on RavenDB • Tentacles (slaves)
  • 8. How does it work ? Broken down in 7 Steps
  • 9. Step 1 – Declare Environment • Declare Machines • Associate Environment and Role • Typical Environments • DEV, INT, QA, STAGE, UAT, PREPROD, PROD • Typical Roles • Front End, Back End FrontEndFrontEnd BackEndBackEnd
  • 11. Step 2 - Create Package of your application • Simply add OctoPack Nuget Package to your projects • Publish Package to Nuget Repository • Either built-in or external Nuget Repo • Typically pushed from TeamCity, Jenkins and other CI • Supported types of projects • Web Application • Windows Service • Windows Executable
  • 12. Step 3 – Create Project in Octopus Deploy • Describe your project quickly • Define Versioning Policy • Arbitrary & Incremental • From Main Nuget Package Version • Define Deployment Policy • Copy missing or all packages to tentacles
  • 13. Step 4 – Create Deployment Process • Describe each step of deployment for your application / solution • Heavily relies on Powershell 2.0 • Steps can be : • Setup IIS Site • Run executable • Run Powershell Script • Customize Configuration • Approval Flow (Email) • Steps can be run in parallel
  • 14. Step 5 – Define Variables • Describe variables for each environment • Variables are associated to scopes and will be evaluated at deployment time • Configuration Files will be transformed according to variable values • Scopes can be linked to : • Environment • Machine • Step number
  • 15. Example of Variable Definitions Variable Value Scope DatabaseServer dev028db DEV DatabaseServer qa028db QA DatabaseServer Prod028db1 PROD;Machine1 DatabaseServer Prod028db2 PROD;Machine2 DNS dev.octopus.com DEV DNS qa.octopus.com QA DNS www1.octopus.com PROD;Machine1 DNS www2.octopus.com PROD;Machine2
  • 16. Step 6 – Create Release • Creating a release will make a snapshot of : • Variables • Steps • Powershell Scripts • Package References • Release can be based on several nupkg files
  • 18. Step 7 – Deploy Release • Choose a release • Choose an environment • Deploy ! • Each step is being executed sequentially • Configuration Files are being transformed • Web.Config Transform Feature similar to Visual Studio • Key Value Replacement
  • 19. Deployment against Environments BackEndBackEnd FrontEndFrontEnd DEV BackEndBackEnd FrontEndFrontEnd PROD BackEndBackEnd BackEndBackEnd FrontEndFrontEndFrontEndFrontEnd BackEndBackEnd FrontEndFrontEnd UAT
  • 20. Deployment Patterns • Rolling deployments • Canary deployments • Blue-green deployments • Isolated Octopus Deploy servers
  • 21. How to integrate into your build pipeline ?
  • 22. How to integrate into your build pipeline ?
  • 23. Flavor of Continuous Delivery Build Run Unit Tests Deploy to DEV Run Sanity Check Promote to INT Run Full Integration Tests Promote to QA Run Manual Tests Promote to PROD
  • 24. Some drawbacks • Manual Rollbacks • One instance of a project on a tentacle client • Packages limited to 10 megabytes • Might be difficult to handle exotic configuration files
  • 25. Features - Last but not least • Full Audit Log • Strong REST API • Nuget Repository • Retention Policies • Permission Model • Lifecycle Management • Azure Deployments • Scheduled Deployments
  • 26. Advanced Scenarios • Let’s talk to Nagios or OP/5 to tell them I’m updating some services • Let’s deploy in PCI-DSS environments
  • 27. Roadmap • Linux Deployments through SSH • Remote Delta Compression • Offline Deployment • Replace RavenDB with SQL Server
  • 28. Resources • https://demo.octopusdeploy.com/app • DotNetRocks, episode 1002: Interview with Paul about Octopus Deploy. • DotNetRocks, episode 966: Nick discusses structured logging, with an overview of Octopus at the start. • Herding Code, episode 143: Paul Stack discusses continuous integration, and mentions Octopus at 20:23. Scott talks about his experiences with Octopus.

Editor's Notes

  1. Chosen Solution for Deploying web applications for nuget.org
  2. Publication can be done with nuget or octo.exe Strong usage of Nuget Packaging and Strong Versioning (SemVer style) Additionnal tasks in csproj – msbuild will take care of executing tasks
  3. Octopus built-in repository will refuse already existing versions of packages
  4. Variables can be sensitive. Permissions can discriminate accesses to variable values
  5. Create release can be automated when new package is pushed to built-in repository
  6. Rolling Deployment – Sequential deployment – X machines at a time Canary Deployment – Deploy to one and test then deploy to remaining Blue-green Deployment – Deploy alternatively for minimum downtime Isolated – PCI – Split pre-prod and prod