Cache not working
Contributing guidelines
- [X] I've read the contributing guidelines and wholeheartedly agree
I've found a bug, and:
- [X] The documentation does not mention anything about my problem
- [X] There are no open or closed issues that are related to my problem
Description
I'm trying to use this action to build a multi stage image using a docker compose configuration file. The build is working correctly and the images are pushed to the Google Artifacts registry just fine, but subsequent builds are not taking advantage of the layers cache even though nothing in the repository changed at all.
Expected behaviour
I would expect this to be way higher than 0%
Actual behaviour
Cache seem not to be used at all?
Repository URL
No response
Workflow run URL
No response
YAML workflow
# Setup gcloud CLI
- uses: "google-github-actions/setup-gcloud@v2"
if: ${{ env.dryRun == 'false' }}
with:
project_id: ${{ env.GCP_PROJECT_ID }}
version: "482.0.0"
# This gives us access to buildx
- name: Set up Docker CLI
uses: docker/setup-buildx-action@v3
# Configure Docker to use the gcloud command-line tool as a credential
# helper for authentication
- if: ${{ env.dryRun == 'false' }}
run: |-
gcloud --quiet auth configure-docker
# Get the GKE credentials so we can deploy to the cluster
- uses: google-github-actions/get-gke-credentials@db150f2cc60d1716e61922b832eae71d2a45938f
if: ${{ env.dryRun == 'false' }}
with:
cluster_name: ${{ env.GKE_CLUSTER }}
location: ${{ env.GCP_LOCATION }}
- name: Build and Push Docker Images
uses: docker/bake-action@v5
env:
TAG: ${{ steps.release-tag.outputs.tag }}
with:
source: "."
files: "compose.yaml"
workdir: "./docker"
push: ${{ env.dryRun == 'false' }}
load: true
Workflow logs
No response
BuildKit logs
No response
Additional info
No response
but subsequent builds are not taking advantage of the layers cache even though nothing in the repository changed at all.
I don't see any use of cache exporters in your workflow. You can use the gha exporter for example:
- name: Build and Push Docker Images
uses: docker/bake-action@v5
env:
TAG: ${{ steps.release-tag.outputs.tag }}
with:
source: "."
files: "compose.yaml"
workdir: "./docker"
push: ${{ env.dryRun == 'false' }}
load: true
set:
*.cache-from=type=gha
*.cache-to=type=gha,mode=max
More info: https://docs.docker.com/build/ci/github-actions/cache/
Thanks, that helped, but still I see only ~60% caching on runs where nothing in the repository changed at all 🤔
Would need to look at your Dockerfile and build logs to figure out if this related to context changes (maybe .git folder).
Can you share your .dockerbuild file from the summary?
Thanks for the help, this is my Dockerfile and this the .dockerbuild: dockerbuild.zip
Personally I don't see anything that could result in cache invalidation.
Edit: I even tried to just re-run the same build and I obtained the same results.
Seems cache is busted at COPY --parents instruction:
Wonder if this is a bug with new --parents flag :thinking:
Can you try without --parents if possible?
Can you also change this step:
# This gives us access to buildx
- name: Set up Docker CLI
uses: docker/setup-buildx-action@v3
to
# This gives us access to buildx
- name: Set up Docker CLI
uses: docker/setup-buildx-action@v3
with:
buildkitd-flags: --debug
And post the BuildKit logs from post step: https://docs.docker.com/build/ci/github-actions/configure-builder/#buildkit-container-logs
Thanks, I removed the --parents and replaced it with several COPY commands one for each file.
This is the buildkit log: https://gist.github.com/FezVrasta/6d0c2024eb1bbfcbd4c37112136ea58d
This the dockerbuild: dockerbuild2.zip
I still see low cache percentage.
Hi!
We are observing issues with the cache as well. For identical contents, sometimes the build simply doesn't use the cache.
These two builds:
- https://github.com/cnpem/epics-in-docker/actions/runs/11168622488
- https://github.com/cnpem/epics-in-docker/actions/runs/11181453892
differ by https://github.com/cnpem/epics-in-docker/commit/635b6d0eeda04f3516252b383ee4a777a6692ea3, and that Dockerfile is not copied into the build at any point.