将 ccache 与 jenkins 管道一起使用



我无法从 Jenkins 管道构建中的ccache中获得一致的好处。我正在CCACHE_BASEDIR设置为当前构建目录的父目录(这适用于/opt/jenkins/workspace(。鉴于此 basedir,我希望所有共享此公共父级的 PR/分支构建都能够在缓存中找到命中,但可惜它们没有。我确实在给定目录中看到了后续构建的缓存命中(例如,如果我手动重建特定的 PR(,这意味着CCACHE_BASEDIR不像我预期的那样工作。

为了进一步诊断,我尝试设置CCACHE_LOGFILE,尽管该文件是由构建生成的,但它实际上是空的(它只包含两行指示 ccache 的版本(。

任何人都可以建议特定的设置或技术,这些设置或技术可以从 Jenkins 管道中的ccache中获得最大收益,或者其他尝试诊断问题的东西?什么可能导致空缓存日志文件?

我正在运行ccache3.3.4。

问题第一部分的解决方案可能是设置hash_dir = false(如果使用环境变量,则CCACHE_NOHASHDIR=1(或设置-fdebug-prefix-map=old=new以将调试信息重新定位到公共前缀(例如-fdebug-prefix-map=$PWD=.(。更多详细信息可以在 ccache 手册的"在不同目录中编译"部分找到。

关于CCACHE_LOGFILE:我以前从未听说过这个问题(我是 ccache 维护者,顺便说一句(,但是如果您将CCACHE_LOGFILE设置为相对文件路径,请尝试将其设置为绝对路径。

相关内容

  • 没有找到相关文章

最新更新