Introducing Practical Octopus Deploy
I started out my career several years ago as a build and install engineer (remember InstallScript? Yeah, me neither.) Today, I create web applications for a large urban county government. Naturally, we need to deploy these applications to various servers. So, like many dev shops, we’ve created our own home-grown deployment processes. Maybe you have too. We’re developers, after all!
While our processes work for us, they had become a bit unwieldy (see Figure 1.) They were also difficult to maintain and needed updating. In addition, we were starting to consider a move towards the cloud. The systems we’ve been using do not address this need at all. As a result, it was time to up our DevOps game.
Getting Better All the Time
Wanting to improve, we started looking at our options. After a brief search we selected Octopus Deploy. As a result, I was asked to join a pilot project. Since I’ve been involved in build and install/deploy throughout my career, I jumped at the chance! Our hope for the pilot was that Octopus would reduce some of the headaches we’d faced. I’m happy to report that it can. Although there’s definitely a bit of a learning curve, using Octopus Deploy was a very positive experience for me.
Smells Like Teen Spirit
After the pilot ended, I wanted to summarize and share what I’d learned with the rest of my team. Due to the size of the topic, I couldn’t do this justice in one post. So this is the first post of a planned multi-part series on “Practical Octopus Deploy.” The goal of this series is to help the reader move from a blank dashboard (Figure 2) to deployment nirvana (Figure 3) as quickly as possible. Some posts will briefly touch on a few admin tasks (mostly to help define terminology.) However, the focus will be from the perspective of a developer who wants to deploy an application. The planned topics include:
- Practical Octopus Deploy – Introduction (this post)
- Practical Octopus Deploy – Environments and Roles (Start reading here if you like to understand the theory before you get to the practical.)
- Practical Octopus Deploy – Lifecycles
- Practical Octopus Deploy – Projects and Project Groups
- Practical Octopus Deploy – Database Change Scripts
- Practical Octopus Deploy – Using DBUp (Start reading here if you prefer to get your hands dirty right away.)
- Practical Octopus Deploy – Using OctoPack
- Practical Octopus Deploy – Advanced OctoPack (upcoming)
- Practical Octopus Deploy – Build Script Changes (upcoming)
- Practical Octopus Deploy – Integrating with TeamCity (upcoming)
- Practical Octopus Deploy – Octopus NuGet Feed (upcoming)
- Practical Octopus Deploy – Octopus Deploy Library (upcoming)
- Practical Octopus Deploy – Creating a Deployment Process (upcoming)
- Practical Octopus Deploy – Using Step Templates (upcoming)
- Practical Octopus Deploy – Variables and Variable Sets (upcoming)
- Practical Octopus Deploy – Automatic Release Creation (upcoming)
- Practical Octopus Deploy – Lifecycles Revisited (upcoming)
Additional Resources for the Truly Curious
I had many questions while setting up the pilot project. Fortunately, I was able to find plenty of resources on the internet. While I hope this series of posts will provide enough information to get going, in each post I also plan to share some of the resources I found most useful.
- One of the first questions I needed to answer for myself was why we selected this particular tool. While this page may lean towards “marketing spin,” it offers a compelling argument for using a purpose-built tool for deployments in general, and for Octopus Deploy in particular:
Why Octopus Deploy? - The documentation on the Octopus website is extensive and quite good. Here is an overview of getting started:
Getting started – Octopus Deploy (please come back here when you are done LOL.) - There are other deployment options besides Octopus Deploy, of course. There are a couple of alternatives that I found interesting, here: Honda, and here: OK Go.