繁体   English   中英

存在缓存未命中

[英]There is a cache miss

我正在尝试在我的构建管道中缓存 cypress 安装。

我有这个任务设置:

- task: Cache@2
  inputs:
    key: 'cypress | $(Agent.OS) | package-lock.json'
    path: 'C:\npm\prefix\node_modules\cypress'

我已经多次运行构建管道,但总是遇到相同的错误:

存在缓存未命中

在此处输入图像描述

这是以前的构建:

在此处输入图像描述

如您所见,它是相同的指纹,那么为什么缓存不起作用?

  1. 将变量system.debug设置为true以获取更多信息。

  2. 您将检查路径以查看它在代理机器上是否正确(您使用的是自托管代理,对吗?)

  3. 通常,在添加任务后的第一次运行时,缓存步骤会报告“缓存未命中”,因为此键标识的缓存不存在。 由于您总是遇到“缓存未命中”问题,我怀疑缓存未正确创建或上传。 您可以尝试对package-lock.json进行一些修改以重新缓存并重新生成一个新密钥,看看结果如何。

检查“缓存作业后任务”结果,看看键是否不同。

在我的情况下,我必须使用npm install --no-save以便在管道期间不会重新生成 package-lock.json 文件。 这确保了“缓存作业后任务”在缓存 node_modules 时使用相同的缓存键。

编辑

这是我们目前在管道中用于缓存 npm 模块的导出示例。

(您必须确保您的package-lock.json已签入您的代码存储库)

steps:
- task: Cache@2
  displayName: 'Npm Install Cache'
  inputs:
    key: '"npm" | "$(Agent.OS)" | my-project/package-lock.json'
    path: 'my-project/node_modules'
    cacheHitVar: NpmInstallCached

- task: Npm@1
  displayName: 'Npm Install'
  inputs:
    command: custom
    workingDir: my-project/
    verbose: false
    customCommand: 'install --no-save'
  condition: ne(variables['NpmInstallCached'], 'true')

还有一件事-为了使缓存任务按预期工作,所有任务都必须成功

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM