GitHub Actions docker/metadata-action Produces Empty Tags
docker/metadata-action generated no tags or labels, so the subsequent build/push has nothing to tag. Usually the images input is missing or the tag rules do not match the current event.
What this error means
The metadata step succeeds but steps.meta.outputs.tags is empty, and docker/build-push-action either pushes an untagged image or fails because no tags were provided.
# meta produced nothing because no images were given
- id: meta
uses: docker/metadata-action@v5
# tags: ${{ steps.meta.outputs.tags }} -> emptyCommon causes
Missing images input
metadata-action needs the images input (the registry/repo) to construct tags. Without it, the tag list is empty even if tag rules are defined.
Tag rules do not match the event
The default and custom tag rules are event-sensitive (for example type=ref or type=semver). On an event none of the rules target, no tags are generated.
How to fix it
Provide images and explicit tag rules
- id: meta
uses: docker/metadata-action@v5
with:
images: ghcr.io/${{ github.repository }}
tags: |
type=ref,event=branch
type=semver,pattern={{version}}
- uses: docker/build-push-action@v6
with:
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}Match tag rules to the trigger
- Give the metadata step an id and read steps.<id>.outputs.tags.
- Add a type=sha or type=raw tag so something is always produced.
- Ensure semver rules only fire on tag events, and ref rules on branch/PR events.
How to prevent it
- Always pass the images input to metadata-action.
- Include a fallback tag rule (type=sha) so tags are never empty.
- Read tags/labels via the step id outputs.