【问题标题】:Using ccache with jenkins pipeline将 ccache 与 jenkins 管道一起使用
【发布时间】:2018-01-29 20:59:15
【问题描述】:

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

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

任何人都可以提出具体的设置或技术,以从 jenkins 管道中的 ccache 或其他尝试诊断问题的方法中获得最大收益吗?什么可能导致空 ccache 日志文件?

我正在运行ccache 3.3.4。

【问题讨论】:

  • 你能让ccache手动工作吗?您可以使用ccache -s 检查 ccache 统计信息,看看它是否正在缓存文件。
  • 我也观察到相同的几乎为空的日志文件行为。你有没有发现为什么会这样@mike-ellery?
  • @SalemDerisavi 我很久以前就停止了这个特定项目的工作,我不记得我是否有过解决方案。下面来自 Joel 的建议可能和它得到的一样好......并且还确保您拥有最新的 ccache。除此之外,我没有任何具体的建议。祝你好运!

标签: jenkins jenkins-pipeline ccache


【解决方案1】:

问题第一部分的解决方案可能是设置hash_dir = false(如果使用环境变量,则设置CCACHE_NOHASHDIR=1)或设置-fdebug-prefix-map=old=new以将调试信息重新定位到一个公共前缀(例如-fdebug-prefix-map=$PWD=.)。更多详情请见"Compiling in different directories" section in the ccache manual

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

【讨论】:

    猜你喜欢
    • 2020-04-28
    • 2020-12-25
    • 2020-10-21
    • 1970-01-01
    • 1970-01-01
    • 2018-04-27
    • 2013-07-29
    • 2011-02-15
    相关资源
    最近更新 更多