如何设置共享 ccache 而不会陷入权限问题?
我想运行具有最新更改的每晚或 CI 构建,并使用大型 ccache 存储库在整个研发过程中共享所有创建的二进制文件。
如何设置共享 ccache 而不会陷入权限问题?
我想运行具有最新更改的每晚或 CI 构建,并使用大型 ccache 存储库在整个研发过程中共享所有创建的二进制文件。
请参阅ccache 手册中新编写的共享缓存部分。本质上,使用相同的CCACHE_DIR
设置,CCACHE_UMASK
适当设置并考虑使用CCACHE_BASEDIR
.
最简单的解决方案:创建一个新组(例如“devel”),并让所有开发人员成为其中的成员。为维护缓存的目录层次结构上的该组授予读/写权限。开发人员还需要修复他们的 umask。
您还可以查看 Mozilla 的sccache,这是一个类似 ccache 的工具,可以将构建工件存储在云存储(GCS/S3/Azure 或 redis/memcached)中。
如果您还使用相关的distcc,那么权限问题将在很大程度上消失,因为编译将在您设置的任何 compile-farm 主机上在它的控制下运行。
您还可以在 distcc 主机中包含开发人员的桌面机器,但代价是有一些重复的工作,其中一个文件可能会在多台机器上编译 - 尽管它永远不会返回一个过时的编译目标文件。它还将加快日常重新编译。
请参阅xcache。
是ccache-cloud,已经在阿里巴巴使用,效率很高。如果您使用的是 ccache,那么切换到 xcache 将非常容易。