The design that I have is a CI server that builds deployment packages, uploads to a NuGet server, then deploys to the CI environment in Octopus (from the external NuGet server). This all works great. However, it leads to a serious accumulation of packages (from the CI builds). I have the ability in my NuGet server (ProGet) to clean up package feeds, but I want to make sure that I don’t delete a package that has been promoted from CI (so I can always redeploy a promoted environment). What I am trying to figure out is the best way to do this. I have a couple of ideas.
The first is to have a step that only executes in the promoted environment that uploads the package to a second feed (one that doesn’t get cleaned up). This works, but it makes everything more complex, as there are now multiple feeds.
The second is to make the CI packages experimental (in terms of NuGet version) and on promotion change the version to a regular version. The cleanup task then only removes experimental versions.
My first question is: do I need to do this? Is there some way that I can configure Octopus to keep promoted packages locally, so even if they disappear from the source, I can still deploy them. If not, any thoughts on how to handle this situation?
Thanks!
Erick