3

ソースが変更されず、キャッシュが永続化されている場合でも、ccache は GitLab CI でキャッシュ ヒットがゼロです。

さらに、ビルドが実行されるたびにキャッシュのサイズが増加します。これは、キャッシュが何度も再構築されることを意味します。

4

1 に答える 1

7

この問題は、ccache がタイムスタンプを介してコンパイラが同じかどうかをチェックするデフォルトの方法でした。各 GitLab CI インスタンスは真新しい Docker コンテナーを実行するため、このタイムスタンプは常に異なり、常に新しいキャッシュを構築します。

これを修正するには、デフォルトの代わりに を設定CCACHE_COMPILERCHECKします。contentmtime

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.
于 2018-12-06T20:46:27.933 に答える