appveyor / ci

AppVeyor community support repository
https://www.appveyor.com
344 stars 65 forks source link

Caching is not really speeding up the build #1164

Open matthargett opened 7 years ago

matthargett commented 7 years ago

We are caching NuGet packages and the build output of one of our submodules, but the cache restoration step is so slow that it isn't saving us much time in total runtime of the build: https://ci.appveyor.com/project/matthargett/react-native-windows/build/1.0.136

Am I doing something wrong here? Any suggestions?

IlyaFinkelshteyn commented 7 years ago

We have new build cache, will enable it if you opt in.

matthargett commented 7 years ago

Sent an email, will close this issue if the new cache helps.

JSkimming commented 7 years ago

I've recently disabled the cache on our builds and have found the build is actually running faster.

See here, it's gone down from > 1 minute to about 30 seconds.

The main culprit is I no longer think the package cache folder is a good candidate (here's the commit)

e.g.

cache:
  - C:\Users\appveyor\.nuget\packages

I think this is because since .NET Core was released, that folder is now populated with the cached packages of all the .NET core packages. Therefore, caching and restoring that folder takes longer than downloading the additional packages one might use.

It would be good to understand how other's are finding good uses of the build cache.

Rondom commented 7 years ago

Start with an empty package cache. There is no point in restoring and saving files that are included in the build worker image anyways.

You can see the config that is used in the Dokan project for here. We only did it for chocolatey, MSYS2 and Cygwin, but I am sure NuGet allows you to specify another cache directory as well somehow.