mirror of
https://github.com/open-webui/open-webui.git
synced 2026-07-16 23:21:44 -05:00
[GH-ISSUE #16548] feat: Please make version tags resolve to the same manifest index as latest and main, or include a stable version label #104948
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @nicholasmerlino on GitHub (Aug 12, 2025).
Original GitHub issue: https://github.com/open-webui/open-webui/issues/16548
Check Existing Issues
Problem Description
We mirror your image from GHCR and need to name artifacts by the real version (SemVer), not floating tags. For a given release, latest/main resolve to a different multi-arch index digest than the version tag (e.g., vX.Y.Z). Because GHCR’s package-versions API maps digest → tags only for that exact object, looking up the latest digest returns only latest/main, not the SemVer tag—even when they represent the same release. This happens because an OCI image index is just a list of platform manifests and can be rebuilt, yielding a different top-level digest while the per-platform images remain identical.
Desired Solution you'd like
Retag the same index: Point vX.Y.Z, latest, and main at the same manifest index digest for a release. Then GHCR’s versions API will return the version tag when we query by digest.
Alternatives Considered
Commit→tag mapping: Read org.opencontainers.image.revision/source from the image config and look up which Git tag points to that commit via the GitHub API. This works but requires extra API calls and relies on those labels being present.
Platform content comparison: Compare a canonical platform manifest (e.g., linux/amd64) for latest vs. recent SemVer tags; if config and layer digests match, treat them as the same release. This is correct per OCI, but it’s heavier and still doesn’t give the name without the tag existing on the same object.
Time-window correlation: Heuristically match GHCR package version timestamps with GitHub Releases. Feasible, but brittle; explicit tagging or labels are preferable.
Additional Context
GHCR exposes container packages and their versions/tags via the Packages REST API (package_type=container), which we use to map digest ↔ tags. When latest and vX.Y.Z are different indices, the digest lookup for latest can’t see the SemVer tag.
OCI annotations define org.opencontainers.image.version, source, and revision keys commonly emitted by docker/metadata-action, which make the version (or commit) machine-discoverable.
The image index being a distinct object from per-platform manifests explains why two indexes for the same release can legitimately have different digests. Aligning tags or adding labels resolves this for consumers who pin by digest but need a human-readable version.
@tjbck commented on GitHub (Aug 13, 2025):
PR welcome.