2017-08-21 82 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設置爲相對文件路徑,請嘗試將其設置爲絕對路徑。