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

Docker 101: Introduction to Docker
Docker 101: Introduction to DockerDocker 101: Introduction to Docker
Docker 101: Introduction to Docker
Docker, Inc.
 
Introduction to docker
Introduction to dockerIntroduction to docker
Introduction to docker
John Willis
 

What's hot (20)

Jenkins CI
Jenkins CIJenkins CI
Jenkins CI
 
Jenkins CI presentation
Jenkins CI presentationJenkins CI presentation
Jenkins CI presentation
 
Multi Stage Docker Build
Multi Stage Docker Build Multi Stage Docker Build
Multi Stage Docker Build
 
Building a CICD pipeline for deploying to containers
Building a CICD pipeline for deploying to containersBuilding a CICD pipeline for deploying to containers
Building a CICD pipeline for deploying to containers
 
Docker 101: Introduction to Docker
Docker 101: Introduction to DockerDocker 101: Introduction to Docker
Docker 101: Introduction to Docker
 
CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...
CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...
CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...
 
Jenkins vs GitLab CI
Jenkins vs GitLab CIJenkins vs GitLab CI
Jenkins vs GitLab CI
 
Jenkins Introduction
Jenkins IntroductionJenkins Introduction
Jenkins Introduction
 
How to Improve Your Image Builds Using Advance Docker Build
How to Improve Your Image Builds Using Advance Docker BuildHow to Improve Your Image Builds Using Advance Docker Build
How to Improve Your Image Builds Using Advance Docker Build
 
Docker Introduction
Docker IntroductionDocker Introduction
Docker Introduction
 
Docker introduction & benefits
Docker introduction & benefitsDocker introduction & benefits
Docker introduction & benefits
 
Jenkins tutorial
Jenkins tutorialJenkins tutorial
Jenkins tutorial
 
Getting started with Docker
Getting started with DockerGetting started with Docker
Getting started with Docker
 
Docker Introduction
Docker IntroductionDocker Introduction
Docker Introduction
 
Gitlab, GitOps & ArgoCD
Gitlab, GitOps & ArgoCDGitlab, GitOps & ArgoCD
Gitlab, GitOps & ArgoCD
 
Docker: From Zero to Hero
Docker: From Zero to HeroDocker: From Zero to Hero
Docker: From Zero to Hero
 
Docker Swarm 0.2.0
Docker Swarm 0.2.0Docker Swarm 0.2.0
Docker Swarm 0.2.0
 
Getting started with Jenkins
Getting started with JenkinsGetting started with Jenkins
Getting started with Jenkins
 
Introduction to docker
Introduction to dockerIntroduction to docker
Introduction to docker
 
"DevOps > CI+CD "
"DevOps > CI+CD ""DevOps > CI+CD "
"DevOps > CI+CD "
 

Viewers also liked

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
 
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

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
 
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
 

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

%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
masabamasaba
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
masabamasaba
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
masabamasaba
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
chiefasafspells
 

Recently uploaded (20)

%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
 
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
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
 
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
 
WSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaSWSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaS
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
 
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
 

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