2017-08-21 83 views
1

我在jenkins管道构建中遇到了难以从ccache获得一致好处的问题。我将CCACHE_BASEDIR设置为我当前编译目录的父目录(这可以解释为/opt/jenkins/workspace)。鉴于这个基础,我期望所有共享该公共/父分支的PR /分支构建能够在缓存中找到匹配,但是它们不会。我看到缓存命中为给定的目录中的后续生成(例如,如果我手动重建一个特定的PR,例如),这意味着CCACHE_BASEDIR不像我所期望的那样工作。在jenkins管道中使用ccache

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

任何人都可以提出具体的设置或技术,以便从詹金斯管道中的ccache获得最大利益,或尝试诊断问题的其他事情吗?什么可能会导致空ccache日志文件?

我正在运行ccache 3.3.4。

+0

你可以让ccache手动工作吗?您可以使用'ccache -s'检查ccache统计信息以查看它是否缓存文件。 –

回答

1

的解决问题的第一部分可能(如果使用的环境变量CCACHE_NOHASHDIR=1)或搬迁调试信息到一个共同的前缀(例如-fdebug-prefix-map=$PWD=.)设置-fdebug-prefix-map=old=new设置hash_dir = false。更多细节可在"Compiling in different directories" section in the ccache manual中找到。

关于CCACHE_LOGFILE:我从来没有听说过这个问题(我是ccache维护者,BTW),但是如果您将CCACHE_LOGFILE设置为相对文件路径,请尝试将其设置为绝对路径。