管道缓存设置问题

时间:2020-04-23 19:07:32

标签: caching azure-devops msbuild

我可能以错误的方式处理新的Cache管道任务,但是我正在尝试改进Build任务。当前,构建任务平均需要20分钟才能完成。我一直在阅读有关新的Cache任务的信息,但似乎对缓存诸如Nuget和npm库之类的项目有所帮助,对我们来说,这是一项不同的任务,只需1分钟。

是否存在可以帮助构建本身的缓存设置?

1 个答案:

答案 0 :(得分:0)

在每次运行开始一遍又一遍地下载相同的依赖项的情况下,缓存特别有用。这通常是一个耗时的过程,涉及数百或数千个网络呼叫。

如果恢复和保存缓存的时间少于从头开始生成输出的时间,则缓存可以有效地缩短构建时间。因此,缓存可能无法在所有情况下都有效,并且实际上可能会对构建时间产生负面影响。 有关详细信息,请参阅此document

还有另外两种方法可以减少构建时间:

  1. 您可以尝试通过并行构建来减少CI管道中的构建时间。以下是参考:blog1blog2

  2. 为了获得更快的性能,您可以使用私有代理来运行构建管道,因为私有代理会在构建之间缓存所有内容。如果确实需要清理存储库(例如,避免由以前的版本中的残留文件引起的问题),则可以在版本定义中选择Clean option

.NET / NuGet

如果您使用PackageReferences直接在您的项目文件中管理NuGet依赖项并拥有packages.lock.json个文件,则可以通过将NUGET_PACKAGES环境变量设置为下面的路径来启用缓存$(Pipeline.Workspace)并缓存该目录。