ソースが変更されず、キャッシュが永続化されている場合でも、ccache は GitLab CI でキャッシュ ヒットがゼロです。
さらに、ビルドが実行されるたびにキャッシュのサイズが増加します。これは、キャッシュが何度も再構築されることを意味します。
ソースが変更されず、キャッシュが永続化されている場合でも、ccache は GitLab CI でキャッシュ ヒットがゼロです。
さらに、ビルドが実行されるたびにキャッシュのサイズが増加します。これは、キャッシュが何度も再構築されることを意味します。
この問題は、ccache がタイムスタンプを介してコンパイラが同じかどうかをチェックするデフォルトの方法でした。各 GitLab CI インスタンスは真新しい Docker コンテナーを実行するため、このタイムスタンプは常に異なり、常に新しいキャッシュを構築します。
これを修正するには、デフォルトの代わりに を設定CCACHE_COMPILERCHECK
します。content
mtime
ccache ドキュメントから:
compiler_check (CCACHE_COMPILERCHECK)
By default, ccache includes the modification time (“mtime”) and size of the compiler in the hash to ensure that results retrieved from the cache are accurate. This setting can be used to select another strategy. Possible values are:
content
Hash the content of the compiler binary. This makes ccache very slightly slower compared to the mtime setting, but makes it cope better with compiler upgrades during a build bootstrapping process.
mtime
Hash the compiler’s mtime and size, which is fast. This is the default.