Cowboy in the desert.

Tentacle versioning and when to update

Robert Erez

Robert Erez

December 12, 2016

Versioning Projects's fine to upgrade or install the latest version of Octopus Server, without necessarily having to use the latest version of Tentacle.

We at Octopus love using GitVersion to version our builds since this provides an easy mechanism to semantically version our products based on the history of the Git repository. This is super helpful when multiple developers are adding fixes, branches and patches to the same project, allowing the system to determine the correct "next" version at build time without having to sort out who just added what, and when do we cut the release.

The flip side of this of course is that all the projects in the same repository will be versioned the same, regardless if we had made any changes to that particular project or not. This is because the versioning context is based on the repository state and not the code within it. Due to a bunch of dependencies (and, let's be honest mainly historical reasons) our primary Visual Studio solution that contains Octopus Server currently also includes Octopus Tentacle. This means that every time we create a new build of the Server installer (which we have been doing a lot of recently!), we get a new version of the Tentacle installer as a build artifact.

Some of our eagle-eyed users have noticed this versioning lockstep and rightly asked us if Tentacles should be upgraded when their Server is upgraded. Due to the fact that Tentacle code rarely changes, you can be confident knowing that it's fine to upgrade or install the latest version of Octopus Server, without necessarily having to use the latest version of Tentacle. Now, before you go straight to the comments section below asking why we don't do "X", or that "Y" would be a better approach, let me assure you that this is something that we plan on fixing soon, probably by breaking the Octopus Tentacle project out into its own repository. We had considered just not publishing Tentacle versions that had no changes but don't like the idea that it would then look like the Tentacle had mysteriously skipped version numbers. With our intended approach we break the confusion cause by version lockstep, but have to then ensure the compatibility is clear given the different version numbers that the two sides will have. Having just said that you "don't need to update the Tentacle", there are still some points to consider.

Tentacle 3.1+ requires .NET 4.5

Late last year we upgraded Tentacle from version 3.1 to use .NET 4.5 in order to provide support for TLS 1.2. While Tentacle 3.1+ still supports TLS 1.0, this nevertheless requires .NET 4.5 and as a result Tentacles from 3.1 onward will not work with servers which cannot upgrade past .NET 4.0.

Since .NET 4.5 is not supported on Windows Server 2003 or Windows 2008 SP1, then this means that for machines running these versions of Windows, you will be unable to upgrade to the newer versions of Octopus Tentacle. Don't worry though, we will provide patch for Tentacle 3.0.x for security or reliability fixes as they occur.

Lock on the Tentacle

If you are in the camp that is stuck with .NET 4.0 on your machine or just don't want to see the annoying message coming up on your environment dashboard, we provided a feature in 3.2.17 to enable you to "lock" your Tentacle version to the one currently installed. This will mean that it wont be included in any updates if you click the "Upgrade All Tentacles" button, nor will the Target remind you when it is out of date after upgrading your Octopus Server. This is a nice way to reduce some of the noise on the environments page, but you will then need to keep an eye on our release notes to make sure you aren't missing any sweet features or fixes. It's worth noting that locking your Tentacle in this way will only take affect for the single target that you enable it on, so you will need to enable it for all targets where you want their Tentacle installation to stay at its current version.

Alternatively you could use another feature provided in the same 3.2.17 release to just dismiss the Tentacle update message. Upon updating the Octopus Server you may find the environment page covered in yellow with the upgrade notice indicating a new Tentacle version is available. Since the upgrade may not actually be necessary, you can click the "dismiss this update" button to ignore this message. Note that this dismissal is simply handled locally using cookies and will show again the next time you update. Once we stop releasing bumping the Tentacle version with every Octopus Server version this feature will be less necessary. In the meantime, if our frequent Server releases are cluttering up your environments page then this button is for you!

Behind the Octo-curtain

Hopefully this short post gives you an idea about some of the behind the scenes thinking that goes into Octopus Deploy and why the Tentacle download is versioned the way it is. All software has improvements to make and this is one area that we are looking to improve. You can currently pay a little less attention to the version of Octopus Tentacle available on the download screen unless we explicitly make a note of Tentacle related changes in the release notes. While this might not be ideal at the moment, we do plan on making some changes to this process in the New Year.

Tagged with: upgrade