azure-devops - 即使步骤失败(如测试),如何让 Azure DevOps 的管道缓存存储其结果?
问题描述
背景: 管道缓存允许存储一个文件夹并在下一次构建时重新使用它,因为某些键、分支和其他东西不匹配。对 node_modules、nuget 包和 Git LFS 很有用,但也适用于构建
我在管道缓存文档中找不到任何内容。
即使构建失败,我也想保存缓存,用于增量构建或 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
但只有在整个管道成功时才会缓存。
解决方案
即使步骤失败(如测试),我如何存储 Azure DevOps 管道缓存?
经过一段时间的调查和讨论,恐怕没有这样的任务/功能来存储 Azure DevOps 管道缓存,即使一个步骤失败。
根据文档管道缓存,此任务用于通过允许在以后的运行中重用一次运行的输出或下载的依赖项来帮助减少构建时间,从而减少或避免重新创建或重新下载相同文件的成本。
它不解析文件或构建日志。所以,即使我们缓存了失败管道生成的文件,我们也无法使用那个没有正确生成或者下次没有生成的文件。在失败的构建中提取正确的信息似乎非常困难。
希望这可以帮助。
推荐阅读
- serverless-framework - 完全部署到产品的 ResourceNotFoundException
- java - 包(共享名称)是否在编译过程中合并?
- c++ - 如何使用 std::copy() 复制到指向通用字节缓冲区开头的目标?
- php - 邮递员不发送任何数据
- java - 将打开 Jar 的批处理文件翻译成其 MacOS 等效文件
- javascript - 在表 Javascript 中需要帮助
- php - 登录到外部网站并将其重定向为已登录用户
- python - pyplot log-log 等高线图不起作用
- php - PHP / SQL Ban状态未回显
- oracle - Oracle XML 解析 - ORA-19202 和 LPX-00601