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]
18. @damovisa | #dddmelb
What is Octopus?
Key concepts
How does it work?
Getting started
Where do I sign!?
Agenda
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
21. @damovisa | #dddmelb
Repeatable
Automated
Deployment Tool
For Windows and Azure
Accessible by browser, a REST API, or command
line
What is Octopus?
22. @damovisa | #dddmelb
Build Tool
For Linux/OSX/mobile/tablet/walkman/whatever
An 8-tentacled sea creature
A “quintopus”
What isn’t Octopus
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
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
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. @damovisa | #dddmelb
A Nuget package that makes Nuget packages
Those packages represent a version of your software
Add OctoPack
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. @damovisa | #dddmelb
Build and
create a
nuget
package
Publish the
package to a
feed
Trigger an
Octopus
release
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
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…