即使步骤失败(如测试),如何使Azure DevOps的管道缓存存储其结果?

时间:2020-06-25 12:11:13

标签: azure-devops pipeline-cache

背景通过管道缓存,可以存储一个文件夹,并在下一个版本中重新使用它,前提是某些键,分支和其他内容不匹配。对于node_modules,nuget软件包和Git LFS有用,对于构建也有用

为此,我在Pipeline Caching docs中找不到任何内容。

对于增量构建或Git LFS检出,即使构建失败,我也要保存缓存,例如以下情形:

  • 已签入新功能分支
  • 重构很大,所以变化很多
  • 一些测试失败,因此不存储缓存
  • 修复它们很简单,并且需要小的重新编译,但是整个构建需要重新运行,整个管道失败。

示例列表如下:

- task: Cache@2
  inputs:
    key: 'yarn | "$(Agent.OS)" | yarn.lock'
    restoreKeys: |
       yarn | "$(Agent.OS)"
       yarn
    path: $(YARN_CACHE_FOLDER)
  displayName: Cache Yarn packages

但是只有在整个管道成功的情况下,它才会缓存。

1 个答案:

答案 0 :(得分:2)

即使步骤失败(如测试),我如何存储Azure DevOps管道缓存?

经过一段时间的研究和讨论,即使步骤失败,恐怕也没有这样的任务/功能来存储Azure DevOps管道缓存。

根据文档Pipeline caching,此任务用于允许通过一次运行的输出或下载的依赖项在以后的运行中重用,从而帮助减少构建时间,从而减少或避免重新创建的成本或再次重新下载相同文件

它不解析文件或构建日志。因此,即使我们缓存了由失败的管道生成的文件,我们也无法使用未正确生成或下次未生成的文件。在失败的构建中提取正确的信息似乎非常困难。

希望这会有所帮助。