I would like to be able to tell Octopus Deploy to treat packages with dependencies as warnings or ignore the fact of the dependencies all together. This is because I want to give the tentacle machines access to the Nuget repository to fulfill the dependencies. This is so that when I survey my deployed applications I can see what applications are dependent on other packages, to see if any are behind on versions.
I do plan on using the PostDeploy powershell script to do the moving of the packages folders to get the dlls and other referenced items. That’s my battle to fight with.
How will the dependencies get to the Tentacle? The process at the moment is that the Octopus server downloads the packages, then pushes them to the Tentacle, and then the Tentacle installs them. I can turn the errors into a warning, but you would need to find a way to download the dependencies.
Or, do you expect Octopus server to also resolve/download the dependencies and push those too? I’m not sure the Octopus server has enough information to know how to resolve dependency versions (e.g., if there are conflicts).
Initially I was envisioning the Tentacle machine having access to the Nuget repository. So when “nuget install xxxx” is run from the tentacle nuget would simply retrieve the additional dependencies from the configured repository. That does depend on my assumption that the Tentacle runs ‘nuget.exe’ to install the package, which would explain the original limitation. It would also require the Tentacle to tell nuget about the repository to use. That could just be a setting on the Tentacle itself (along side port and server key) but in the future allow the server to push that kind of configuration out.
I realize this would not be the best long term solution, but perhaps it would be an simple one to implement and get feedback on the number of people wanting to use the dependency part of Nuget.
I’m going to make dependencies appear as a warning, but they’ll still be ignored by Tentacle during installation. How does that sound?
That sounds great as long as the tentacle is running "nuget.exe install ".
Then I can take it upon myself to ensure that machine can access the appropriate nuget repository, letting nuget do it’s own process. And then I’ll setup a PostDeploy.ps1 to handle the movement of the dependencies myself.
Unfortunately Tentacle doesn’t call NuGet.exe - it actually uses NuGet.Core directly, and tells it explicitly to ignore dependencies.
There’s a section on dependencies in Octopus here in case you haven’t seen it which explains the reasoning behind why dependencies aren’t supported:
If you can, perhaps try to catch me on Jabbr (http://jabbr.net/#/rooms/octopus) and we can discuss this in more detail.
Sorry I missed you on jabbr. But yes, that makes sense. Just making it a warning and the tentacle ignoring the dependencies would be greatly appreciated.
What I am considering now is that I will setup the package with everything inclusive (like OctoPack does) but add the dependencies information in that package. That would allow the original functionality of Octodeploy to continue, but also allow me to track the dependencies of each application that is in use in production with other tooling.
That sounds like a good approach - the dependencies will effectively serve as metadata allowing you to track them, without making the deployment any more complex than it needs to be. Sounds like a winning solution to me! Let me know if I can help with anything else.