AWS Codebuild を使用して Docker イメージを構築しています。最近、ビルド キャッシュを利用するために buildkit を追加しました (これ以前は、キャッシュはまったく利用されていませんでした)。私のbuildspecファイルからのビルドコマンドは次のとおりです。
DOCKER_BUILDKIT=1 docker build --build-arg BUILDKIT_INLINE_CACHE=1 [...a lot of build-args] -t $REPOSITORY_URI:latest --cache-from $REPOSITORY_URI:latest .
前回のビルドからコードを変更せずに Codepipeline 全体の再ビルドをトリガーすると、ほとんどのレイヤーでキャッシュが使用されます。ビルドログを調査し、このような行を見つけることでわかります#35 CACHED
。しかし、ビルドする前にコードを変更すると、すべてのキャッシュが無効になったようです。変更の影響を受けるレイヤーとそれ以降のレイヤーのみを再構築する必要があると予想していました。
これを解決する方法についていくつかの提案をしたいと思います。