GitHub Actions缓存报错:Content-Length not found on blob response 如何解决?
GitHub Actions缓存恢复报错「Content-Length not found on blob response」的原因与解决办法
问题场景
软件依赖一个极少变更、构建耗时8分钟的第三方库,为加速流水线使用actions/cache@v3缓存构建输出,配置如下:
- name: Cache third-party libraries id: cache-libs uses: actions/cache@v3 with: path: Path\to\libs key: "test-key"
首次构建时缓存未命中(符合预期),构建完成后缓存显示保存成功,且能在仓库的actions/caches页面看到缓存条目,但重新运行工作流时缓存恢复失败,报错:
Run actions/cache@v3 Warning: Failed to restore: Content-Length not found on blob response Cache not found for input keys: test-key
尝试手动触发缓存保存操作后,问题依旧。
错误含义
这个错误表示GitHub缓存服务返回的缓存Blob对象响应中缺少Content-Length HTTP头部,导致actions/cache无法验证下载的缓存包完整性,因此直接放弃缓存恢复流程。常见诱因包括:缓存条目损坏、GitHub缓存服务临时异常、Windows runner上的路径解析/压缩工具兼容性问题。
解决方法
- 修正缓存路径格式:在Windows runner中,将路径的反斜杠
\替换为正斜杠/,避免路径解析错误导致缓存包内容异常。例如将Path\to\libs改为Path/to/libs。 - 更换缓存压缩格式:默认的zstd压缩可能在Windows环境存在兼容问题,可指定使用gzip压缩:
- name: Cache third-party libraries id: cache-libs uses: actions/cache@v3 with: path: Path/to/libs key: "test-key" compression: gzip - 删除旧缓存条目:手动删除仓库
actions/caches页面中的旧缓存,重新运行工作流生成全新缓存(旧缓存可能已损坏)。 - 升级缓存Action版本:切换至
actions/cache@v4,新版本修复了多个Windows平台的缓存兼容性问题。 - 更新runner工具链:确保Windows runner上的Git for Windows(tar工具的来源)为最新版本,旧版本tar打包的缓存包可能存在格式问题。
内容的提问来源于stack exchange,提问作者Dmitry Grigoryev
相关产品推荐
相关产品推荐

