🚿
Daggerのキャッシュをクリアする
はじめに
環境に依らずCUEやGo等でCI/CDパイプラインを構築できるDaggerで色々と試しているのですが、ローカルのキャッシュクリア方法がわからず調べるのに地味に時間を使ったのでやり方をメモしておきます。
ローカルに独自のキャッシュがある
Daggerはパイプラインの外側でキャッシュを保持しており、例えばGoでキャッシュを使わないようにテストを実行していても同じ環境で複数回パイプラインを回すとキャッシュされてしまいます。
(略)
#17 go test -v -race -cover -run 1 ./...
#17 CACHED
Dockerボリュームを削除する
キャッシュはDaggerパイプラインを実行すると自動的に立ち上がる dagger-buildkitd
が保持しているためこいつのボリュームを削除することでキャッシュがクリアできます。
(コンテナの削除だけではダメです)
$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ab694a43ab54 moby/buildkit:v0.10.5 "buildkitd --debug" About a minute ago Up About a minute dagger-buildkitd
$ docker container stop dagger-buildkitd && docker container rm dagger-buildkitd && docker volume rm dagger-buildkitd
dagger-buildkitd
dagger-buildkitd
dagger-buildkitd
$
キャッシュを無効にして実行する
dagger
コマンドで実行する歳は --no-cache
オプションを付けてやればOKです。
$ dagger do <action> --no-cache
Discussion