So the big news we've all been waiting for, Octopus 3.0 pre-release is now released to the public!
We know we took a little longer that we thought with this one, it's a HUGE release for us with a lot of changes. This post will give you an outline of the major ones.
For the TL;DR, read the next bit carefully.
This is a pre-release, which means it's not the officially supported version of Octopus Deploy (that's a few more weeks away). What that means is download it, install it, use it and help us improve it by giving us feedback and letting us know about any bugs you might find. But it's probably not perfect, and it’s not the final release.
What that also means is that we're taking feedback and bug reports differently.
This is important.
For Octopus Deploy 3.0 pre-release support, feedback and bug reports use our new Community Forum. We're posting a lot there so it's the place to get all the latest information. We've got some How To posts there which will eventually become blog posts or part of the documentation. You can also subscribe to the pre-release forum to get an email when there's new activity. We'll release most builds on the Downloads Page, but we may ship some interim builds directly to the forum.
OK, on with the details, you can read on or watch the video of our webinar for a more visual walk through of what's new.
In 3.0, we took our time because there were a few things in the architecture that we wanted to change for performance and supportability.
This is the big one you've all been waiting for. As of 3.0 we've moved away from RavenDB and on to SQL Server as a data store. We have a few blog posts explaining the why and how of this change which you can read. The upshot of this though is a faster product, one that scales better and something that is easier for us to support. This comes at the slight expense of our install experience, we chose not to bundle an embedded SQL Server instance but we also know that a SQL Server install is a pretty familiar thing to our customers. We support SQL Server 2008 and upwards and the Express edition all the way to Enterprise as well as Azure SQL instances.
Halibut, our new communications stack
In Octopus 2.* we used a library we called Pipefish, an Actor framework similar to Akka.NET, for our communications. With 3.0 we've replaced that with something we call Halibut, which has simplified our codebase as well as giving us something which is easier to trace and debug, which means something easier to support. It's open source too if you'd like to go and see how it works.
As well as the gains we're seeing in development cost and supportability of these two changes, they also make Octopus a whole lot faster and more scalable. We'll share some more metrics with you in the coming weeks as we push it some more.
With 3.0 we've also changed our Tentacle architecture. The Tentacle used to contain all the code to do deployments of packages, run our conventions (i.e. change configuration files etc) and do tasks like IIS configuration. This made it very tightly coupled to the Octopus Version. We've now broken that into two pieces. Tentacle is an agent which doesn't do much other than securely transfer files and run commands, and all the logic is in Calamari. Newer Calamari packages get pushed to the Tentacle as part of the health check process, so this means fewer Tentacle upgrades. Calamari is also open source. What that means for you is that you could fork and tweak it for your environment and have some of your own deployment code.
We've finally added the Delta Compression library into Octopus for package transfer. Depending on the contents of your Nuget packages, you should see a dramatic reduction in the amount of data you need to transfer to the Tentacle between versions. This is going to be a great saving in time and network utilization for a lot of customers.
We've talked a little about Deployment Targets in the past, but we've made the concept of a "machine" a little more generic.
Offline Deployment is a new Deployment Target. One that a lot of people have been asking for. If you're one of our customers who currently has a custom installation script for deploying to totally isolated environments, you can now add an Offline Deployment target. When you deploy to this, we'll package up the Nuget packages, a copy of Calamari, a JSON file containing the release variables and a bootstrapping script that can be run on the target machine. There's a "getting started" post here you can read if you'd like to use that.
This was one of the drivers for separating Calamari from Tentacle. Now we can just bundle up all our deployment tools as part of this package and you can take them with you!
Azure Web sites
Previously we had a Web Deploy script in our Library which used WebDeploy to push the contents of a package to an Azure Website. This is now built in as a Deployment Target.
We've also revamped our support for Cloud Services. As part of this you can now perform any conventions on your package (variables, config transforms etc) because we'll unpack your .cspkg, run conventions, then re-pack before pushing to Azure.
For details on our Azure support, have a read of this post.
We've had SSH and Linux support on the radar for ages now, and it's here! To do this, we made Calamari compatible with Mono so you'll need that on your target machine. We did this so that we could maintain a single codebase for these tools and Linux support didn't become a second class citizen. Also, now that Tentacle is just an agent it means our architecture for the two platforms is very similar. To read more about our SSH support read this post, and for a walk through of setting up your own we have another.
The Migrator feature is part of the Octopus Server manager and also available from the command line. It is a tool which will:
- Import your 2.6 backup into 3.0
- Export your 3.0 project configuration into a directory of JSON files
- Import 3.0 JSON files into Octopus Deploy
This will help you bring your existing Octopus configuration into 3.0. It will help you transition a 3.0 POC or Pilot into a production environment. With some scripting you could also build something to export projects out of a staging Octopus instance and push them to a production one.
With some scripting you can also... wait for it... commit your entire Octopus Deploy configuration into Git (or the VCS of your choice)!!!!!!
A couple of things you won't see
You might notice that Octopus 3.0 currently looks just like 2.6. That will change by the time we're at the final release. We're spending the next few weeks giving it a bit of a look and feel change, but we wanted to get the functionality out there for you to test.
You might also notice that FTP is missing as a deployment target. FTP was another item that was very hard to support for us. The component we used worked in some environments and not others. Due to the very low number of people using FTP steps (and we think a lot of them are for Azure websites anyway) we made the decision to not port that feature to 3.0. You'd still be able to achieve the same goal with a PowerShell step, and we might look at providing one in the library.
If this one is an issue for you, please let us know and we'll help you out.
The other thing you may encounter, because we've totally revamped our Cloud Services support, the old Azure Web Role support isn't something that the migrator will bring across. You'll need to do a bit of a manual port if you're using that feature in 2.6.
So let's get started
As I said at the beginning of the post, the Community Forum is the place for more information, feedback, bug reports and discussion. Any Octopus 2.* support should be via the normal channels.
Once we're out of pre-release this will change, and we're hoping that the Community Forum stays around as a place to discuss more general things. So go and grab the bits and get started!
A quick note on licensing
A few people have asked this. If you have a valid maintenance agreement with us (i.e. you have bought Octopus in the last 12 months OR have renewed your maintenance) then 3.0 is a FREE upgrade. If your maintenance has expired, you'll want to renew that to be able to upgrade.