Be a better developer: Octopus Deploy

We’re starting a new series here on the Mindscape blog about tools we use to help you deliver software better. This is part one in an open ended series. This post we’re looking at…

Octopus Deploy Logo

Octopus Deploy is a web based deployment tool for .NET. It is built by the master craftsman Paul Stovell who has gone full time building and selling it to customers around the world (including us).

As I’m sure every .NET developer is aware, deployment for web solutions on the .NET platform is pretty poor. This where Octopus really is like a breath of fresh air.

How does it work?

You start by setting up an Octopus server installation, it’s a simple web based system which is easily installed by a friendly setup process. After that is done the next step is to install a small agent service called a Tentacle on each target server we are intending to deploy to.

Octopus requires that you package your deployments using the NuGet package format which is simple enough to do by calling NuGet as part of your build script. To make that even easier Paul also provides an open source project called OctoPack to help automate it. Once you are creating packages you can let Octopus know about them by supplying it with a feed to your packages, this could be as simple as a local folder containing the packages.

In our case TeamCity handily provides a feed of any package artifacts that get created as part of your builds and we stamp the .nuspec file with the version number of the build so that each build gets its own package created. Octopus plays remarkably well with TeamCity.

Lets deploy

Octopus handles deployments by first having you create a release. You then select the package you want to release and then choose where you are releasing it to. Rather than picking a specific server Octopus works with a notion of environments so you can have more than one server targetted at a given time and so you can easily manage your releases through test to production. In our case we have 2 test environments and the production environment which we release to. Kicking off a deployment causes the Octopus Server to upload the package to your target servers after which is unpacked and any installation e.g. wiring it up to a known IIS web site is done. To cater for any custom requirements Powershell scripts can be included into the deployment and executed at various points when the deployment is being run.

Octopus Deploy Dashboard

How does this save you time?

Deploying websites took us quite some time and I’m a little ashamed to admit we used to use the publish command in Visual Studio and manually upload a zip file of the result. Then we would back up the files and do an xcopy deploy via Remote Desktop. Yuck!

Here is what Ive noticed since we started using Octopus:

  1. Packaging and deploying now involves a few clicks. Time focused on this task dropped from about 20-30 minutes to about 2 minutes. This is a huge reduction in the time required.
  2. Deployments are now reliable. It’s easy to miss deploying a file, or automatically overwriting a web.config if you’re doing this manually. Automating the whole process reduces user error and results in more reliable deployments. The time this saves varies on how badly you can screw up on a deployment via human error :-)
  3. The whole team can deploy. For example, the designer for the Mindscape site can now do a deployment easily without needing to wait on available time for one of the site developers to do the deployment.
  4. Better backup strategy. We have Octopus configured so that rolling back a release is super simple and even backing up is automated. When disaster strikes it only strikes for a second.

All of these time and sanity saving benefits of Octopus Deploy have already added up to be a significant amount of time saved for us. Hours. Days. Weeks.

Other benefits

Paul has been working on Octopus for a while and it shows. It’s streets ahead of any other deployment product we’ve seen for .NET developers. I could write quite a lot about all the different features that are now supported but it would be better if you just read them yourself: Octopus Deploy.

What’s it going to set me back?

Currently Octopus Deploy is free for one project. It then moves to $349 USD for up to 3 projects. That’s pretty inexpensive anyway you look at it given the time you will save.

We currently use Octopus Deploy for this website and our crash reporting service, Raygun.io.

This is the first in a series. If you have a fantastic time saving developer tool you think could do with some exposure, post in the comments!

Tagged as General

7 Responses to “Be a better developer: Octopus Deploy”

  • Using Octopus for deploying my sample asp.net websites and OctoPack for packaging.Its really nice.
    What i actaully wanted is a COmplete automation , where the process starts from my ‘TFS Check IN’

  • Hi John,

    Using such a tool is a two edged sword – at least from my personal experience. On one hand you have a cutting edge technology that may speed up the work, on the other hand you are at the mercy of the developer of this tool.

    What happens if “Octopus Deploy” suddenly is no more? What happens if and when its developers move to something else?

  • [...] Be a better developer: Octopus Deploy (John-Daniel Trask) [...]

  • I guess one other tool that could be mentioned is LINQPad

  • Pretty nifty. Thanks for sharing!

  • @Fadi You could look at any product in terms of ‘what if it stops getting supported’ — Paul has been working on it for years, he’s growing the team around it. Really going from strength to strength really. I have faith – but perhaps I’m biased as we used to get that as a common reason not to pick Mindscape products and yet here we are – 6 years later and just rocketing forward. In that time we’ve seen products from far larger competitors come to market and be killed. You are making an investment in the company as much as the product when you buy.

    @Rajat It’s true that Octopus won’t help you from the second you check in, but in a subsequent post I’ll be reviewing Team City. Octopus works flawlessly with Team City as your CI environment and you’ll get very close to automatically deploying on commit into TFS if you use it with Team City. I can’t recommend Team City enough, JetBrains have done a superb job with it.

    @Alex Indeed LINQPad is great. We were one of the first 3rd parties to work at having integration with LINQPad and we still act as the defacto provider for anyone wanting to use LINQPad with data stores like PostgreSQL. You can read more here: http://www.mindscapehq.com/products/lightspeed/linqpad-support

    Thanks for the comments everyone.

  • @Rajat:
    I have my TFS build agent setup to do CI build oneach checkin. The build creates the packages using octopack and finally publishes the packages to the octopus repository and trigger a release. Great huh.

  • Leave a Reply

Archives

Join our mailer

You should join our newsletter! Sent monthly:

Back to Top