@damovisa | #dddmelb
With thanks to our sponsors
@damovisa | #dddmelb
Damian Brady – SSW #dddmelb | @SSW_TV
@damovisa
Octopus Deploy
and how to stop deploying
like an idiot
@damovisa | #dddmelb
Meet Frank
@damovisa | #dddmelb
Frank does
deployments
@damovisa | #dddmelb
Wow.
Such Document.
@damovisa | #dddmelb
Frank’s Checklist
@damovisa | #dddmelb
Frank is good
@damovisa | #dddmelb
Usually
@damovisa | #dddmelb
Not Frank’s fault
@damovisa | #dddmelb
Ugh. Brian.
@damovisa | #dddmelb
Good old Frank
@damovisa | #dddmelb
Frank’s an idiot.
@damovisa | #dddmelb
It’s just a script
@damovisa | #dddmelb
Frank is not
automated
@damovisa | #dddmelb
Meet Octopus
Deploy
@damovisa | #dddmelb
Octopus is Frank’s
replacement
@damovisa | #dddmelb
… do you know
PowerShell?
@damovisa | #dddmelb
What is Octopus?
Key concepts
How does it work?
Getting started
Where do I sign!?
Agenda
@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
@damovisa | #dddmelb
Introduction to
Octopus
@damovisa | #dddmelb
 Repeatable
 Automated
 Deployment Tool
 For Windows and Azure
 Accessible by browser, a REST API, or command
line
What is Octopus?
@damovisa | #dddmelb
 Build Tool
 For Linux/OSX/mobile/tablet/walkman/whatever
 An 8-tentacled sea creature
A “quintopus”
What isn’t Octopus
@damovisa | #dddmelb
How does it work?
@damovisa | #dddmelb
Packaging
Versioning
Feeds
Under the covers
@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
@damovisa | #dddmelb
Octopus Server
Web Server App Server Database Server
@damovisa | #dddmelb
Octopus Server
Web Server App Server Database Server
@damovisa | #dddmelb
Octopus Server
Web Server App Server Database Server
@damovisa | #dddmelb
Key Concepts
@damovisa | #dddmelb
Project
Environment
Role
Process
Steps
Variables
Library
Concepts
@damovisa | #dddmelb
Project = a thing you’re deploying
@damovisa | #dddmelb
Environment = a collection of servers
@damovisa | #dddmelb
Role = a defined purpose for a server
@damovisa | #dddmelb
Process = the steps required for deployment
@damovisa | #dddmelb
Same process for every environment*
Everything is built on PowerShell
Clever processes are possible
Facts.
@damovisa | #dddmelb
Getting Started
@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
@damovisa | #dddmelb
http://www.octopusdeploy.com/downloads
Octopus Server
Octopus Tentacles
Introduce them
Install Octopus
@damovisa | #dddmelb
Set up a Nuget Feed
Create an Environment
Add machines and give them roles
Create a Project
Add process steps
Configuration
@damovisa | #dddmelb
A Nuget package that makes Nuget packages
Those packages represent a version of your software
Add OctoPack
@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
@damovisa | #dddmelb
Build and
create a
nuget
package
Publish the
package to a
feed
Trigger an
Octopus
release
@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
@damovisa | #dddmelb
Where do I sign!?
@damovisa | #dddmelb
5 projects, 10 users, 5 tentacles = FREE
Pricing
@damovisa | #dddmelb
http://docs.octopusdeploy.com
http://www.octopusdeploy.com/support
http://www.octopusdeploy.com/partners
http://octopusdeploy.uservoice.com
Need help?
@damovisa | #dddmelb
Linux deployments
Passing variables between steps
More flexible per-environment steps
Parallel steps
Better rollback support
Coming soon…
@damovisa | #dddmelb
@damovisa | #dddmelb
Thank you!
Damian Brady
www.damianbrady.com.au | @damovisa | info@damianbrady.com.au
www.ssw.com.au
Sydney | Melbourne | Brisbane | Adelaide
@damovisa | #dddmelb

Octopus Deploy and how to stop deploying like an idiot

Editor's Notes

  • #19 5min
  • #23 “see, there’s only 5”. A quintopus.
  • #24 10min
  • #25 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.
  • #26 PKI and unique per-machine identifiers Heh, Squid.
  • #30 15min
  • #31 [Image of dashboard]
  • #32 Projects page
  • #36 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
  • #37 25min
  • #40 [image of nuget] [image of environments] [image of projects]
  • #42 You can package, publish to a feed, and trigger deployments all from your build or the command line
  • #45 35min
  • #46 Source code is also available The number of people we’ve converted…