I’m using Paul Stovell’s shiny new deployment tool called Octopus on my current work project. I think it’s safe to say, for deploying a site to IIS, it beats the crud out of anything else I know . If you haven’t heard of it, the basic idea is to use Nuget packages as units of deployment. A site on IIS receives instructions to deploy releases from either a web page or an API. A machine receiving the deployment (a tentacle) receives a push of the Nuget package(s) containing your application. The tentacle runs the Nuget package(s), deploying your functionality.
For proponents of Continuous Delivery, this is one of the missing pieces for getting a TFS shop to one touch deployment.
I’ve been using this technology in conjunction with the TFS continuous integration server, and I have to say that I’m very excited about the results so far. To be clear, from the moment we brought TFS in house I’ve had a love/hate relationship with it. I love that EVERYTHING is integrated and can be audited and automated when using TFS. I can trace every workitem to the code that resulted, to the tests that were created and to the build that fixed it. …I hate just about everything else.
I’m definitely not a big fan of the Team Build process. The way I see it, Microsoft took MSBuild which doesn’t totally suck, and wrapped it with Workflow Foundation – which does. I’m sure many would disagree, but I they probably haven’t been scrambling for the past week to pull together bits and pieces of Team Build instruction from all over the internet. And they might not have had their IDE crashing constantly and inexplicably when trying to edit their build workflow. They also might not be big fans of TDD which, as far as I can tell, is close to impossible when writing Team Build code.
In the interest of saving others a bit of that heartache, I’ll post some helpful tidbits of my own in the next blog post. I’ve created a Team Build code activity to initiate an Octopus release creation and deployment. I’ve created another which will monitor the deployment and incorporate the results in your build.
Sound helpful? Read on: next blog post.