如何将Ccache配置为只使用辅助存储作为缓存,而完全跳过主存储?
我们的CI管道使用容器来编译和构建C++应用程序。我们希望使用Ccache来减少构建时间,并希望缓存与所有管道共享。为此,Ccache的辅助存储选项似乎很理想,但我们不知道如何配置Ccache以完全跳过主存储(本地缓存(。
我们希望Ccache立即联系辅助存储,但我认为如果本地缓存生成的缓存首先未命中也可以。理想情况下,不更新本地缓存,以免在那里浪费时间。当然,无论何时发生丢失,都必须更新辅助存储。
我曾考虑将--max-files
或--max-size
设置为0
,但这是一个完全不设置限制的特殊值。将这些选项设置为1
可能会起作用,但它也会不必要地触发Ccache的清理逻辑,浪费时间。
我还注意到配置选项read_only
,但文档中明确指出:";。。。但它不会将新结果添加到任何高速缓存后端";,这意味着我们的辅助存储永远不会更新。
您可以通过在配置文件中设置remote_only = true
或设置环境变量CCACHE_REMOTE_ONLY
,将Ccache 4.7及更新版本配置为仅使用远程存储(过去称为辅助存储(。
功能文档:https://ccache.dev/manual/4.7.4.html#config_remote_only
在ccache存储库的以下功能中-https://github.com/ccache/ccache/blob/3a2f970842417ea605d24b07af652be91c7eff31/src/storage/Storage.cpp#L292,在我看来,如果不首先更新主存储器,就不可能立即将文件放入辅助存储器。据我所知,您最好将--max-size
配置为您提到的一个相当小的值。
您是否考虑过使用任何替代方案?sccache支持在构建器之间共享单个缓存,因此它可能正是您想要的。