From 784d059c3da5b36e2b6794ebf2e34bc15c8a9824 Mon Sep 17 00:00:00 2001 From: Paul Nothaft Date: Fri, 10 Jul 2026 09:46:10 +0200 Subject: [PATCH] fix(ci): publish v-prefixed image tags so :vX.Y.Z resolves (#668) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit docker/metadata-action's type=semver strips the leading 'v', so releases published only :3.45.0 / :3.83.1-beta.0. But git tags + GitHub releases are named v3.45.0, so anyone pinning ghcr.io/.../backend:v3.45.0 (the obvious choice) hit 'manifest unknown' — exactly #664. Add v-prefixed semver patterns (v{{version}}, v{{major}}.{{minor}}, v{{major}}) alongside the existing bare ones, for both backend and frontend. Now both :v3.45.0 and :3.45.0 resolve. Applies to future releases; the already-published v3.45.0 only has the bare :3.45.0 tag (retagging past releases is out of scope). --- .github/workflows/docker-build.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/docker-build.yml b/.github/workflows/docker-build.yml index 21bbe0aa..50fe78b3 100644 --- a/.github/workflows/docker-build.yml +++ b/.github/workflows/docker-build.yml @@ -282,6 +282,9 @@ jobs: type=semver,pattern={{version}} type=semver,pattern={{major}}.{{minor}},enable=${{ steps.context.outputs.is_prerelease == 'false' }} type=semver,pattern={{major}},enable=${{ steps.context.outputs.is_prerelease == 'false' }} + type=semver,pattern=v{{version}} + type=semver,pattern=v{{major}}.{{minor}},enable=${{ steps.context.outputs.is_prerelease == 'false' }} + type=semver,pattern=v{{major}},enable=${{ steps.context.outputs.is_prerelease == 'false' }} type=sha,format=short # `:latest` + `:stable` follow the stable channel (the `stable` branch + # stable release tags). The default branch is now `main` (active dev), @@ -499,6 +502,9 @@ jobs: type=semver,pattern={{version}} type=semver,pattern={{major}}.{{minor}},enable=${{ steps.context.outputs.is_prerelease == 'false' }} type=semver,pattern={{major}},enable=${{ steps.context.outputs.is_prerelease == 'false' }} + type=semver,pattern=v{{version}} + type=semver,pattern=v{{major}}.{{minor}},enable=${{ steps.context.outputs.is_prerelease == 'false' }} + type=semver,pattern=v{{major}},enable=${{ steps.context.outputs.is_prerelease == 'false' }} type=sha,format=short # `:latest` + `:stable` follow the stable channel (the `stable` branch + # stable release tags). The default branch is now `main` (active dev),