Massive List of Dependencies and Frequent Release Issue

The situation we are trying to use Octopus Deploy to solve is this:

We have a very large suit of applications that are all revisioned and released together. There are dozens of websites, and several supporting web services per release. The total size of the necessary assemblies in the NuGet file(s) is over 5GB per release. 95% of this bulk is dependent assemblies that are shared across the projects and that will not change for 100s (or more) releases, yet we have to package, and deploy them every time, and for every product, at least that is my current understanding of Octopus’ dependency model. I hope I am wrong.

With the number of servers we are pushing to, the time on the network (not to mention disk space) is becoming a problem as the release frequency increases (QA and UAC environments suffer immensely from this now).

Is there a way to get Tenicals to cache NuGet packages containing these dependent assemblies, and only push them with a release when they need to be revisioned? This seems like a basic feature that follows the NuGet pattern well, but is missing. Or am I just missing it?



Hi Tyler,

Thanks for getting in touch.

Tentacle does cache NuGet packages and performs delta compression to reduce network load. Even if you had all of your dependencies in one package Tentacle would only transfer the 5% difference between the version it currently had the new version you are deploying.

I think the best way to model what you describe is to package your slow-changing dependencies separately from your web sites. Your project would be set up to deploy both dependency and web site packages but the dependency package would not change versions between releases. When you deploy, Octopus would detect that your dependency package has already been deployed to the Tentacle and will not send it again over the network.

For example:
Release 1.0 has DependencyPackage 1.0 and WebSitePackage 1.0
Release 1.1 has DependencyPackage 1.0 and WebSitePackage 1.1
Release 1.2 has DependencyPackage 1.0 and WebSitePackage 1.2

If that is what you have modeled already and you are seeing the dependency packages being pushed with every deployment then we would need to investigate why it’s happening.

I hope this helps.