Octopus Deploy and how to stop deploying like an idiot


Published on

Ever had your site go down because Jim accidentally copied over the web.config? Ever broken out into a cold sweat because forgot the where clause in a production update script? Well stop deploying like an idiot.

Deploying applications has traditionally been one of the most dangerous parts of software development. It's often very hands-on, relying on the right people doing the right thing at the right time, and is therefore extremely prone to failure.

In this talk, we'll briefly look at why it's important to automate your entire deployment process as soon as possible. We'll then look at some of the ways teams try to manage their deployments and reduce the danger. Finally, I'll show you why Octopus Deploy is the best way to do it. We'll look at some real-world Octopus implementations, including very complex environments, in-depth testing, and automated rollbacks.

[Presentation from DDD Melbourne 2014 - http://www.dddmelbourne.com]

Published in: Software
1 Like
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide
  • 5min
  • “see, there’s only 5”. A quintopus.
  • 10min
  • Built on Nuget – this gives us packaging and versioning out of the box. A nuget feed will contain versions of a package so it’s easy to check for updates.
    Octopus has its own Nuget feed built in.
  • PKI and unique per-machine identifiers
    Heh, Squid.
  • 15min
  • [Image of dashboard]
  • Projects page
  • Example of a clever process:
    - Deploy services to app role, web app to web role, tests to test role
    - Run selenium UI tests against the web server from the test server
    - Change connection string to point to the app server
    - Run integration tests against the web server from the test server
    - Send notifications
    - Rollback if anything fails
  • 25min
  • [image of nuget]
    [image of environments]
    [image of projects]
  • You can package, publish to a feed, and trigger deployments all from your build or the command line
  • 35min
  • Source code is also available
    The number of people we’ve converted…
  • Octopus Deploy and how to stop deploying like an idiot

    1. 1. @damovisa | #dddmelb With thanks to our sponsors
    2. 2. @damovisa | #dddmelb Damian Brady – SSW #dddmelb | @SSW_TV @damovisa Octopus Deploy and how to stop deploying like an idiot
    3. 3. @damovisa | #dddmelb Meet Frank
    4. 4. @damovisa | #dddmelb Frank does deployments
    5. 5. @damovisa | #dddmelb Wow. Such Document.
    6. 6. @damovisa | #dddmelb Frank’s Checklist
    7. 7. @damovisa | #dddmelb Frank is good
    8. 8. @damovisa | #dddmelb Usually
    9. 9. @damovisa | #dddmelb Not Frank’s fault
    10. 10. @damovisa | #dddmelb Ugh. Brian.
    11. 11. @damovisa | #dddmelb Good old Frank
    12. 12. @damovisa | #dddmelb Frank’s an idiot.
    13. 13. @damovisa | #dddmelb It’s just a script
    14. 14. @damovisa | #dddmelb Frank is not automated
    15. 15. @damovisa | #dddmelb Meet Octopus Deploy
    16. 16. @damovisa | #dddmelb Octopus is Frank’s replacement
    17. 17. @damovisa | #dddmelb … do you know PowerShell?
    18. 18. @damovisa | #dddmelb What is Octopus? Key concepts How does it work? Getting started Where do I sign!? Agenda
    19. 19. @damovisa | #dddmelb MVP in VS ALM, MSTS, MCSD, MBA, OMGWTFBBQ SSW Solution Architect and QLD State Manager Co-author of Professional TFS 2013 I love: • TFS • Scrum • ASP.NET MVC • HTML5/CSS/JS Damian Brady
    20. 20. @damovisa | #dddmelb Introduction to Octopus
    21. 21. @damovisa | #dddmelb  Repeatable  Automated  Deployment Tool  For Windows and Azure  Accessible by browser, a REST API, or command line What is Octopus?
    22. 22. @damovisa | #dddmelb  Build Tool  For Linux/OSX/mobile/tablet/walkman/whatever  An 8-tentacled sea creature A “quintopus” What isn’t Octopus
    23. 23. @damovisa | #dddmelb How does it work?
    24. 24. @damovisa | #dddmelb Packaging Versioning Feeds Under the covers
    25. 25. @damovisa | #dddmelb Head (Octopus Server) Tentacles (Services on clients) PKI and X.509 to secure communication (SQUID) Process steps are run on the tentacles Parts of an Octopus
    26. 26. @damovisa | #dddmelb Octopus Server Web Server App Server Database Server
    27. 27. @damovisa | #dddmelb Octopus Server Web Server App Server Database Server
    28. 28. @damovisa | #dddmelb Octopus Server Web Server App Server Database Server
    29. 29. @damovisa | #dddmelb Key Concepts
    30. 30. @damovisa | #dddmelb Project Environment Role Process Steps Variables Library Concepts
    31. 31. @damovisa | #dddmelb Project = a thing you’re deploying
    32. 32. @damovisa | #dddmelb Environment = a collection of servers
    33. 33. @damovisa | #dddmelb Role = a defined purpose for a server
    34. 34. @damovisa | #dddmelb Process = the steps required for deployment
    35. 35. @damovisa | #dddmelb Same process for every environment* Everything is built on PowerShell Clever processes are possible Facts.
    36. 36. @damovisa | #dddmelb Getting Started
    37. 37. @damovisa | #dddmelb 1. Install Octopus Server 2. Install Tentacles 3. Configure Octopus (Environments, Projects, Steps) 4. Add OctoPack to your project 5. Add to your Build Process Getting Started
    38. 38. @damovisa | #dddmelb http://www.octopusdeploy.com/downloads Octopus Server Octopus Tentacles Introduce them Install Octopus
    39. 39. @damovisa | #dddmelb Set up a Nuget Feed Create an Environment Add machines and give them roles Create a Project Add process steps Configuration
    40. 40. @damovisa | #dddmelb A Nuget package that makes Nuget packages Those packages represent a version of your software Add OctoPack
    41. 41. @damovisa | #dddmelb TeamCity? – install the plugin TFS? – use the build template Something else? – there’s a solution: http://docs.octopusdeploy.com/display/OD/API+and+Integration Add to your build msbuild MySolution.sln /t:Build /p:RunOctoPack=true
    42. 42. @damovisa | #dddmelb Build and create a nuget package Publish the package to a feed Trigger an Octopus release
    43. 43. @damovisa | #dddmelb Set up CI into a dev/test environment Run tests as part of your process Promote automatically to a point Manually promote for production Use http://library.octopusdeploy.com Massive enterprise with layers of bureaucracy and TFS? Look at Release Manager for Visual Studio Advice
    44. 44. @damovisa | #dddmelb Where do I sign!?
    45. 45. @damovisa | #dddmelb 5 projects, 10 users, 5 tentacles = FREE Pricing
    46. 46. @damovisa | #dddmelb http://docs.octopusdeploy.com http://www.octopusdeploy.com/support http://www.octopusdeploy.com/partners http://octopusdeploy.uservoice.com Need help?
    47. 47. @damovisa | #dddmelb Linux deployments Passing variables between steps More flexible per-environment steps Parallel steps Better rollback support Coming soon…
    48. 48. @damovisa | #dddmelb
    49. 49. @damovisa | #dddmelb Thank you! Damian Brady www.damianbrady.com.au | @damovisa | info@damianbrady.com.au www.ssw.com.au Sydney | Melbourne | Brisbane | Adelaide
    50. 50. @damovisa | #dddmelb