Merge/unmerge common dependencies?

I’m evaluating Octopus Deploy for possible purchase. We’re currently running TeamCity (and now Octopus) on a server in our office and deploying to a remote data center. Our current process is pretty well automated, but one pain point we’re trying to solve is the time it takes to deploy a release. Our “app” consists of 4 ASP.NET MVC web apps and one Windows service. The slowness in our current process comes from zipping/FTPing/unzipping the build artifacts. The single zip file is currently about 25MB, and the majority of its bulk comes from shared DLLs, mostly 3rd-party libs from NuGet, resulting in 5 bin folders that are over 90% the same. It would be really great if we could somehow package/transfer/unpackage those shared DLLs once and have the deployment process be smart enough to reconstitute the bin folders on the production server.

I’ve been thinking about a custom solution but thought I’d look into Octopus first. So far it appears we’ve taken a step backwards in that the 5 NuGet packages output by TeamCity total about 60MB. I see that Octopus does not support NuGet dependencies so I don’t think there’s a way to leverage that. Are you aware of any other way to solve this? If it makes a difference, a release will always involve deploying all 5 packages. Thanks.

Hi Todd,

This can probably be achieved with some careful packing and PowerShell steps in Octopus. It doesn’t sound like that would be a great user experience though.

Is it possible to host a NuGet server (even just on a file share) at the same network location as the deployment is taking place? Having the build server push new builds over the network before deployment, and then deploying the packages from a local feed via Tentacle, would make the install/rollback experience faster at the expense of some extra work during build.

Just a thought, anyway - hope this helps.