Skip to content

Fix Docker publish: pass metadata tags to manifest merge - #9

Merged
Lucifix merged 1 commit into
mainfrom
fix/docker-manifest-tags
Sep 15, 2026
Merged

Lucifix merged 1 commit into
mainfrom
fix/docker-manifest-tags

Conversation

@Lucifix

@Lucifix Lucifix commented Sep 15, 2026

Copy link
Copy Markdown
Owner

What does this change?

Fixes the failing Merge manifests & tag job in the Docker publish workflow. That job failed on the run for #8's merge: https://github.com/Lucifix/model-workshop-manager/actions/runs/35005981097

The step read the tags from DOCKER_METADATA_OUTPUT_JSON with the jq path .target."docker-metadata-action".tags. That path belongs to the bake-file format, and this variable doesn't use it, so jq returned null. With no tags, imagetools create refused to push:

jq: error (at <stdin>:1): Cannot iterate over null (null)
ERROR: can't push with no tags specified, please set --tag or --dry-run

So main never got latest or sha-* tags on GHCR, only untagged per-arch digests. The Docker Hub mirror step comes after this one and never ran.

The step now:

  • reads steps.meta.outputs.tags (newline-separated), the same source the Docker Hub mirror step already uses
  • builds the imagetools create arguments as a bash array instead of relying on word splitting
  • stops with a clear ::error:: if metadata-action produced no tags

Reviewer notes

  • I checked the argument building locally with sample tags and digest files. The real check is the next run on main after merge.
  • After the first successful run, the GHCR package has to be set to Public; new packages start out private.
  • Docker Hub mirroring only runs if the DOCKERHUB_USERNAME / DOCKERHUB_TOKEN repo secrets are set.

Related issue

Follow-up to #8.

Checklist

  • Ran npm run lint:fix and npm run fmt at the repo root (fmt:check passes)
  • Added/updated backend tests for behavior changes (if applicable): n/a, workflow only
  • npm run typecheck and npm run build pass: n/a, no app code changed
  • Followed existing conventions (comments explain why not what)

Screenshots

n/a

The merge step jq'd DOCKER_METADATA_OUTPUT_JSON using the bake-file path
(.target."docker-metadata-action".tags), which is null for that env var.
imagetools create then got no -t flags and failed with "can't push with no
tags specified", so main never got tagged on GHCR and the Docker Hub mirror
never ran. Read steps.meta.outputs.tags directly and fail loudly if empty.
@Lucifix
Lucifix merged commit 758ba40 into main Sep 15, 2026
6 checks passed
@Lucifix
Lucifix deleted the fix/docker-manifest-tags branch September 15, 2026 18:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant