Surfaced during live acceptance testing of #843 (PR #956). After aicr bundle --deployer argocd-helm --output oci://localhost:5500/aicr/eks-training:<tag> --plain-http reports a successful push, helm upgrade --install against the same registry returns:
$ helm upgrade --install aicr-test-stack oci://localhost:5500/aicr/eks-training \
--version 5bc50950-argocd-helm-oci \
--namespace argocd \
--plain-http
Release "aicr-test-stack" does not exist. Installing it now.
Error: unable to locate any tags in provided repository: oci://localhost:5500/aicr/eks-training
The bundler's pkg/oci/push.go uses ociv1.MediaTypeImageLayerGzip for the layer and the custom application/vnd.nvidia.aicr.artifact for the manifest config. Helm OCI expects:
- Chart layer mediaType:
application/vnd.cncf.helm.chart.content.v1.tar+gzip
- Manifest config mediaType:
application/vnd.cncf.helm.config.v1+json
- Tag enumeration via
/v2/<name>/tags/list (standard OCI distribution API)
Hypotheses (need verification):
- Layer mediaType mismatch: helm OCI rejects artifacts whose layer mediaType isn't
helm.chart.content.v1.tar+gzip. AICR pushes oci.image.layer.v1.tar+gzip — fine for Argo CD's raw OCI source but possibly not for helm.
- Config mediaType mismatch:
application/vnd.nvidia.aicr.artifact for the manifest config is the artifactType; helm needs the Helm-specific config schema (Chart.yaml-derived JSON metadata).
- Missing
helm annotation (oci.opencontainers.image.title etc.) on the manifest — helm's discovery may need OCI annotations identifying the artifact as a chart.
Reproduction:
unset GITLAB_TOKEN && make build
make kwok-cluster # any single-node Kind cluster; the registry is local
bash kwok/scripts/install-infra.sh
$AICR bundle --deployer argocd-helm --output oci://localhost:5500/aicr/test:v1 --plain-http \
--recipe <(aicr recipe --service eks --intent training)
helm upgrade --install test oci://localhost:5500/aicr/test --version v1 --plain-http -n argocd
# Error: unable to locate any tags in provided repository
Likely fix area: pkg/oci/push.go::PackArtifact — when --deployer argocd-helm, push with Helm-compatible mediaTypes/annotations so the artifact is discoverable by both Helm OCI and Argo CD (Argo CD v3.x's OCI Helm chart source already accepts helm.chart.content.v1.tar+gzip per its docs).
PR #956 (draft) ships helm + argocd-helm-oci wiring; argocd-helm-oci is blocked on this issue.
Surfaced during live acceptance testing of #843 (PR #956). After
aicr bundle --deployer argocd-helm --output oci://localhost:5500/aicr/eks-training:<tag> --plain-httpreports a successful push,helm upgrade --installagainst the same registry returns:The bundler's
pkg/oci/push.gousesociv1.MediaTypeImageLayerGzipfor the layer and the customapplication/vnd.nvidia.aicr.artifactfor the manifest config. Helm OCI expects:application/vnd.cncf.helm.chart.content.v1.tar+gzipapplication/vnd.cncf.helm.config.v1+json/v2/<name>/tags/list(standard OCI distribution API)Hypotheses (need verification):
helm.chart.content.v1.tar+gzip. AICR pushesoci.image.layer.v1.tar+gzip— fine for Argo CD's raw OCI source but possibly not for helm.application/vnd.nvidia.aicr.artifactfor the manifest config is the artifactType; helm needs the Helm-specific config schema (Chart.yaml-derived JSON metadata).helmannotation (oci.opencontainers.image.titleetc.) on the manifest — helm's discovery may need OCI annotations identifying the artifact as a chart.Reproduction:
Likely fix area:
pkg/oci/push.go::PackArtifact— when--deployer argocd-helm, push with Helm-compatible mediaTypes/annotations so the artifact is discoverable by both Helm OCI and Argo CD (Argo CD v3.x's OCI Helm chart source already acceptshelm.chart.content.v1.tar+gzipper its docs).PR #956 (draft) ships helm + argocd-helm-oci wiring; argocd-helm-oci is blocked on this issue.