Assistance with TeamCity, NuGet and OctopusDeploy setup/configuration for new CI environment

Silly question perhaps. We’re attempting to implement a new continuous integration environment using TeamCity+OctopusDepoy. I can build out server product fine, but am struggling with how to correctly define a NuGet package and configure Octopus Deploy to install the newly build executables in that NuGet package.

For our server product, we build a bunch C++ x64 executables with a single Visual Studio solution. Right now each of those executables is packed into the same NuGet package — on words A.exe, B.exe, C.exe, D.exe, E.exe and F.exe.

For deployment, each logical server is comprised of multiple physical boxes running Windows Server. Typically we have 3 types pf physical boxes (ex. Uno, Dos and Tres) when Uno needs A.exe. B.exe and F.exe each installed as a Windows Services, where Dos needs C.exe, D.exe and F.exe and Tres gets E.exe and F.exe. But some times we might instead have an Uno that gets all (i.e, A.exe, B.exe, … , F.exe) and no Dos or Tres whatsoever.

My questions is, what is the best approach for setting up the NuGet package and configure Octopus Deploy to auto-manage such an environment?

Any advice folks can offer would be greatly appreciated.


Hi Rob,

Thanks for getting in touch! I think the best way to work with your situation and optimize it in Octopus would be to split the executables into their own packages and I’ll explain why.
This would allow the following to happen. For a single project you could have a package step for each exe and have it deploy to its own role such as “Aexe”.
This means that for machines that can have 3 different packages, they could have all three roles “aexe” “bexe” “fexe” then the other servers can also have their roles.
Then each step is configured to run on the correct machines. If you want to do a release that only deploys A.exe you could skip the other steps.

With roles for each step, and thus executable, it means B.exe would never be deployed to a server that it wasn’t supposed to be deployed on.
Here is our Roles documentation
(If you feel like you missed this, I only just made it available)

If I can give any further explanation let me know.