在我的jenkins管道构建中,我很难从ccache中获得一致的好处。我将CCACHE_BASEDIR设置为当前构建目录的父目录(这适用于类似于/opt/jenkins/workspace的内容)。鉴于这一基础,我希望所有公共关系/分支构建,共享这个共同的父,能够找到命中缓存,但遗憾的是,他们没有。我确实看到了给定目录中后续构建的缓存命中(例如,如果我手动重新构建特定的PR ),这意味着CCACHE_BASEDIR并不像我所期望的那样工作。
为了进一步诊断,我尝试设置CCACHE_LOGFILE,尽管该文件是由构建生成的,但它实际上是空的(它只包含两行指示ccache版本的行)。
有人能提出一些特定的设置或技术,以便从jenkins管道中的ccache中获得最大的利益,或者其他一些尝试诊断问题的方法吗?什么会导致空的ccache日志文件?
我运行的是ccache 3.3.4。
发布于 2018-02-13 20:05:35
这个问题的第一部分的解决方案可能是设置hash_dir = false (如果使用环境变量的话是CCACHE_NOHASHDIR=1),或者设置-fdebug-prefix-map=old=new来将调试信息重新定位到一个公共前缀(例如-fdebug-prefix-map=$PWD=.)。更多细节可以在在ccache手册中的“在不同目录中编译”一节中找到。
关于CCACHE_LOGFILE:我以前从未听说过这个问题(我是ccache维护者,BTW),但是如果您将CCACHE_LOGFILE设置为相对文件路径,请尝试将其设置为绝对路径。
https://stackoverflow.com/questions/45802970
复制相似问题