From 8d0c800d588337dc06246ac4c01b047a142227fe Mon Sep 17 00:00:00 2001 From: Tamal Saha Date: Thu, 4 Jun 2026 09:44:41 +0600 Subject: [PATCH] ui-updater: exit on digest failure, skip templated chart names MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Restore the fail-loud behavior from #628 (reverted in #640), but skip digest resolution entirely when the chart name contains '{' or '}' (e.g. uik8sappscodecom-featureset-{.metadata.release.name}-editor) — those names are resolved at render time and have no fixed digest. Signed-off-by: Tamal Saha --- cmd/ui-updater/main.go | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/cmd/ui-updater/main.go b/cmd/ui-updater/main.go index 1c01cebf0..119fec35c 100644 --- a/cmd/ui-updater/main.go +++ b/cmd/ui-updater/main.go @@ -21,6 +21,7 @@ import ( "io/fs" "os" "path/filepath" + "strings" kmapi "kmodules.xyz/client-go/api/v1" uiapi "kmodules.xyz/resource-metadata/apis/ui/v1alpha1" @@ -204,11 +205,17 @@ func getDigestOrVersion(repo, bin, ver string) string { if repo != "appscode-charts-oci" { return ver } + // Skip digest resolution for templated chart names (e.g. + // uik8sappscodecom-featureset-{.metadata.release.name}-editor) — the + // chart name is only resolved at render time, so no fixed digest exists. + if strings.ContainsAny(bin, "{}") { + return ver + } ref := fmt.Sprintf("ghcr.io/appscode-charts/%s:%s", bin, ver) digest, err := crane.Digest(ref, crane.WithAuthFromKeychain(authn.DefaultKeychain)) if err != nil { - fmt.Fprintf(os.Stderr, "WARN: failed to resolve digest for %s: %v\n", ref, err) - return ver + fmt.Fprintf(os.Stderr, "ERROR: failed to resolve digest for %s: %v\n", ref, err) + os.Exit(1) } return digest }