Nuget Cache

Hello,

we’re trying this amazing product here in my company.

For correct releases we are using normal releases numbering (1.0.0, 1.0.1 etc).

But for volatile releases we’re using a 0.0.0 version in order to not have too many “dev” releases in the releases page on octopus.

I’m encountering this problem:

Delta compression is enabled for package transfers from the Octopus Server to deployment targets
Package VisecaOne.Web.Files.0.0.0 was found in cache. No need to download.
Package VisecaOne.Web.Kentico.0.0.0 was found in cache. No need to download.
Package VisecaOne.Web.Kentico.Api.0.0.0 was found in cache. No need to download.

How can I remove the cache? Or disable it?

I’ve found this (link)[http://help.octopusdeploy.com/discussions/questions/5704-what-does-re-download-packages-from-the-nuget-server-do], but I couldn’t find the checkbox.

ps: I’m not using internal repository, but the company Artifactory internal nuget.

Hi Luca,

Thanks for getting in touch.

There is no option to remove or disable the package cache. The option that you are looking for is shown you are deploying a release. The sequence to get there would be Project -> Create release -> Deploy and then click “Advanced”. It sounds like this is going to be cumbersome for you to do every time.

I would recommend scrapping your 0.0.0 versioning strategy for volatile releases and instead use a pre-release tag. You can then use channels (https://octopus.com/docs/key-concepts/projects/channels) to manage your production and development releases.

For example: use versions like 1.0.1-dev001 for dev packages. Create two channels: Production and Development. Add a version rule to the Development channel with the tag “dev” and a version rule to the Production channel with the tag “^$”. Now the UI will show you what is current in each channel. Your dev packages will only be deployed to the Development channel and your production packages to the Production channel.

You can also enforce environment restriction on the Development channel so that dev build don’t accidentally end up in your production environments. Create a lifecycle (https://octopus.com/docs/key-concepts/lifecycles) that include only your development environments. Assign the lifecycle to your Development channel. Now any dev releases can only be deployed to the environments in your dev lifecycle.

I hope this helps, please let me know if you have any questions or if there is anything else I can help with.

Cheers,
Shane

I’ll have a look for your suggestions, Thanks you very much!

Ok, I have successfully created the 2 channels and the 2 lifecycle, wonderful…

But I have one more question, my current flow is now:

  • msbuild the solution, using the flags:

RunOctopack
OctoPackPublishPackageToHttp = artifactory
OctoPackPackageVersion

  • create the release using octo.exe and using ‘create-release’ passing the flags
    version = 0.0.i-dev (which will be autoincremented by octopus)
    defaultpackageversion = same as OctoPackPackageVersion

Now, the octopus ‘release’ is automatically increased by octopus, but I still have the same problem as before, because OctoPackPackageVersion is not auto-incremented, but always 0.0.0, therefore it’s still cached.

I can use the “0.0.0.*” part on AssemblyInfo so it will be autoincremented by msbuild but then I have another issue, how can I read this value from msbuild and then pass
to Octo? I have to manually search for all octopacked folders, read the version and pass it to octo? That’s gross.

Any idea?
What I’m doing wrong?

Hi Luca,

When you OctoPack your packages it will use the AssemblyInformationVersion by default. So you can let msbuild auto incremement the build number. Here is a complete list of the versions OctoPack can use: https://octopus.com/docs/packaging-applications/nuget-packages/using-octopack#UsingOctoPack-Versionnumbers

You can also specify a tag by using the OctoPackAppendToVersion parameter. So for your example you would specify OctoPackAppendToVersion=dev.

When your packages have been pushed you can create the release using Octo.exe by specifying the channel you are creating the release for and it will use the latest packages that match the rules for the channel. For example, to create a release using the latest packages in the “Dev” channel:

Octo create-release --Project "MyProject" --Channel "Dev"

Does that help answer your questions?

Cheers,
Shane

Yeah! It’s working now, thanks for your help, now I have another question but I’'ll open an appropriate thread for this!

Thanks Again
Luca