2

如何将 Ccache 配置为仅使用辅助存储作为缓存并完全跳过主存储?


我们的 CI 管道使用容器来编译和构建我们的 C++ 应用程序。我们希望使用 Ccache 来减少构建时间,并希望缓存与所有管道共享。为此,Ccache 的辅助存储选项似乎很理想,但我们不知道如何配置 Ccache 以完全跳过主存储(本地缓存)。

我们希望 Ccache 立即联系辅助存储,但我认为如果本地缓存生成的缓存首先未命中也可以。理想情况下,本地缓存不会更新,以免在那里浪费时间。当然,必须在发生未命中时更新辅助存储。

我正在考虑设置--max-files或设置--max-size0但这是一个完全没有限制的特殊值。将这些选项设置为1可能会起作用,但它也会不必要地触发 Ccache 的清理逻辑,浪费时间。

我还注意到配置选项read_only,但文档明确指出:“......但它不会向任何缓存后端添加新结果”,这意味着我们的辅助存储永远不会更新。

4

2 回答 2

2

您是否考虑过使用任何替代品? sccache支持跨构建器共享单个缓存,因此它可能正是您正在寻找的。

于 2022-02-21T11:46:43.013 回答
1

在 ccache 存储库的以下功能中 - https://github.com/ccache/ccache/blob/3a2f970842417ea605d24b07af652be91c7eff31/src/storage/Storage.cpp#L292在我看来,不可能立即将文件放入二级存储无需先更新主存储。据我了解,您最好的选择是配置--max-size为您提到的相当小的值。

于 2022-02-20T01:03:50.687 回答