Discussed in #45054
Originally posted by ribbybibby August 4, 2026
Description
The helmfile manager drops any release whose chart: includes an inline @sha256:... digest, marking it unsupported-chart-type. The digest is a valid part of an OCI reference, so this is a false rejection and the dependency is silently lost rather than updated.
Reproduction
Minimal repro: https://github.com/ribbybibby/renovate-helmfile-oci-digest-repro
helmfile.yaml:
releases:
- name: grafana
chart: oci://ghcr.io/grafana/helm-charts/grafana@sha256:3d75dc3173c3fb07eaa8853283f38558c7c27259f7ed00cf8c096173667426a1
version: 10.5.15
Current behaviour
{
"depName": "ghcr.io/grafana/helm-charts/grafana@sha256:3d75dc31…",
"packageName": "ghcr.io/grafana/helm-charts/grafana@sha256:3d75dc31…",
"currentValue": "10.5.15",
"datasource": "docker",
"skipReason": "unsupported-chart-type"
}
Expected behaviour
- The
@sha256:... digest is split into currentDigest and excluded from packageName/depName.
- Version updates work as they do for digest-free OCI charts.
- Ideally, the digest in
chart: is also updatable.
Root cause
In lib/modules/manager/helmfile/extract.ts, an oci:// chart becomes packageName = depName = removeOCIPrefix(dep.chart) with the digest still attached. The name is then validated by isValidChartName, whose OCI regex rejects @. The last path segment is grafana@sha256:..., so validation fails and skipReason is set to unsupported-chart-type before any datasource lookup runs.
Two levels of fix:
- Split the digest into
currentDigest and strip it from the name before validation, so the dep is no longer dropped and version updates resume.
- Add a replaceString/update path so the digest in
chart: can be rewritten (digest updates are currently not wired in the helmfile manager at all).
Discussed in #45054
Originally posted by ribbybibby August 4, 2026
Description
The
helmfilemanager drops any release whosechart:includes an inline@sha256:...digest, marking itunsupported-chart-type. The digest is a valid part of an OCI reference, so this is a false rejection and the dependency is silently lost rather than updated.Reproduction
Minimal repro: https://github.com/ribbybibby/renovate-helmfile-oci-digest-repro
helmfile.yaml:Current behaviour
Expected behaviour
@sha256:...digest is split intocurrentDigestand excluded from packageName/depName.chart:is also updatable.Root cause
In
lib/modules/manager/helmfile/extract.ts, anoci://chart becomespackageName = depName = removeOCIPrefix(dep.chart)with the digest still attached. The name is then validated byisValidChartName, whose OCI regex rejects @. The last path segment isgrafana@sha256:..., so validation fails andskipReasonis set to unsupported-chart-type before any datasource lookup runs.Two levels of fix:
currentDigestand strip it from the name before validation, so the dep is no longer dropped and version updates resume.chart:can be rewritten (digest updates are currently not wired in the helmfile manager at all).