fix(ci): docker-publish version tag missing on workflow_dispatch#140
fix(ci): docker-publish version tag missing on workflow_dispatch#140dfrostar wants to merge 1 commit into
Conversation
When docker-publish.yml is dispatched via workflow_dispatch (the
backfill path for tags that were created with GITHUB_TOKEN and didn't
fire downstream workflows), `type=ref,event=tag` produced no version
tag — that pattern only fires on push:tag events. Result: the v0.9.0
GHCR image was pushed but only got the `:latest` tag, not `:v0.9.0`.
Diagnosis: GHCR anonymous tags-list API after the v0.9.0 dispatch
shows only `latest`:
curl -fsS -H "Authorization: Bearer $token" \
https://ghcr.io/v2/dfrostar/neuralmind/tags/list
→ {"name":"dfrostar/neuralmind","tags":["latest"]}
Fix: switch to `type=raw,value=${{ env.RELEASE_TAG }}` which works
for both event paths (push:tag → RELEASE_TAG=github.ref_name,
workflow_dispatch → RELEASE_TAG=inputs.tag). The verify-pull job
already reads the first tag from metadata-action outputs, so it
naturally pulls the version-specific tag for its smoke test.
After this merges, the v0.9.0 image needs to be re-built:
gh workflow run docker-publish.yml --ref main -f tag=v0.9.0
This will overwrite `:latest` (same content) and create `:v0.9.0`.
Future push:tag runs (once RELEASE_PLEASE_TOKEN is set per #98) are
also fixed by the same change — RELEASE_TAG is set from
github.ref_name in env, and type=raw reads it directly.
https://claude.ai/code/session_01SH6iHNAqeMJHXdq7ubVcuJ
There was a problem hiding this comment.
Pull request overview
This PR fixes GHCR Docker image tagging so manually dispatched release backfills produce the version-specific image tag as well as latest.
Changes:
- Replaces
docker/metadata-actiontag generation fromtype=ref,event=tagtotype=raw,value=${{ env.RELEASE_TAG }}. - Updates inline workflow comments to explain behavior for both tag pushes and
workflow_dispatch.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
NeuralMind self-benchmarkStatus: Phase 1 — Reduction on committed fixture
Phase 2 — Learning uplift
Note: uplift numbers on a 500-line fixture are intentionally modest — the point is to Assumptions
Per-model token reduction
Rows marked measured use the provider's real tokenizer. Rows marked Automated by |
Summary
Small workflow YAML fix. One line of
docker/metadata-actionconfig.Problem
The v0.9.0 GHCR image was pushed by
docker-publish.ymlbut only got the:latesttag, not:v0.9.0. Confirmed via the GHCR anonymous tags API:Root cause: line 76 used
type=ref,event=tag. That pattern only fires on push:tag events. When the workflow is dispatched via workflow_dispatch (the backfill path for tags that didn't auto-fire because of #98),github.event_nameisworkflow_dispatch, notpush, soevent=tagdoesn't match and no version tag is produced.Fix
type=raw,value=${{ env.RELEASE_TAG }}reads from theRELEASE_TAGenv var, which is set correctly for both event paths:push:tag→RELEASE_TAG = github.ref_name(=v0.9.0)workflow_dispatch→RELEASE_TAG = inputs.tag(= whatever the user typed)The
verify-pulljob already reads the first tag fromneeds.build-and-push.outputs.tagsfor its smoke-test pull, so it naturally pulls the version-specific tag after the fix.After this merges
Re-dispatch
docker-publish.ymlfor v0.9.0 once to produce the missing:v0.9.0tag:(Or from mobile: https://github.com/dfrostar/neuralmind/actions/workflows/docker-publish.yml → Run workflow → enter
v0.9.0→ green button.)This will overwrite
:latestwith the same content + create:v0.9.0. Multi-platform manifest unchanged.Test plan
python3 -c "import yaml; yaml.safe_load(...)"parses:latestalready exists in GHCR (so the push path works — only the tagging pattern was wrong):v0.9.0tag appears in GHCR tags listRelated
https://claude.ai/code/session_01SH6iHNAqeMJHXdq7ubVcuJ
Generated by Claude Code