🚿

Daggerのキャッシュをクリアする

2022/10/31に公開

はじめに

環境に依らず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