Skip to content

fix(helm): skip OCI repos in helm_repo_update#9

Open
NickAnge wants to merge 1 commit into
masterfrom
nickange/fix-helm-oci-repo-update
Open

fix(helm): skip OCI repos in helm_repo_update#9
NickAnge wants to merge 1 commit into
masterfrom
nickange/fix-helm-oci-repo-update

Conversation

@NickAnge

@NickAnge NickAnge commented Jul 3, 2026

Copy link
Copy Markdown

Summary

helm_repo_update passes all repos to helm repo update, including OCI registries (oci://). OCI registries don't use the index-based update flow — they're pulled directly by URL — so helm repo update fails with invalid reference when it encounters one.

This filters out OCI repos before calling helm repo update and returns early if no non-OCI repos remain. helm_pull already handles OCI correctly via chart_pull_path, so this only affects the update step.

Affects any chartfile using OCI repos (e.g. karpenter, cert-manager, envoy-gateway, kepler, tinkerbell in deployment_tools).

Test

  • Added test_repo_update_oci_only_skips_helm — passes only OCI repos to helm_repo_update, asserts Ok(()) without needing helm on PATH
  • Verified locally with rtk tool charts vendor against the deployment_tools karpenter chartfile (two OCI chart versions)
cargo test -p rtk --test charts_test test_repo_update_oci_only_skips_helm

OCI registries do not use the traditional index-based `helm repo update`
flow. Passing them through causes `helm repo update` to fail with
"invalid reference". Filter them out and return early if no non-OCI
repos remain.
@NickAnge NickAnge requested review from a team and julienduchesne as code owners July 3, 2026 10:13
@github-actions

github-actions Bot commented Jul 3, 2026

Copy link
Copy Markdown

Benchmark Results

Benchmark Test vs tk vs base
Diff cluster_scoped 52.21x faster equal
Diff configmap_unchanged 34.03x faster equal
Diff deployment_nested_changes 32.88x faster equal
Env List Single Inline Directory (--json) 48.06x faster equal
Env List Single Inline File (--json) 48.04x faster equal
Env List All Environments (--json) 85.36x faster equal
Eval Single Static Environment 15.93x faster equal
Eval Inline Environment File 19.85x faster equal
Eval Eval Expression - Deeply Nested Path 16.22x faster equal
Export (Full) Single Static Environment 6.87x faster equal
Export (Full) Single Inline Environment 21.55x faster equal
Export (Full) All Environments 19.69x faster equal
Export (Replace) Single Static Environment 5.68x faster equal
Export (Replace) Single Inline Environment 21.46x faster equal
Export (Replace) All Environments 29.74x faster equal
Helm Template Full Export 1.42x faster equal
Tool Importers Count Single Lib Directory (Non-Recursive) 2.45x faster equal
Tool Importers Count Single Lib Directory (Recursive) 2.4x faster equal
Tool Importers Count Entire Lib Directory (Non-Recursive) 1.55x faster equal
Tool Importers Count Entire Lib Directory (Recursive) 1.18x faster equal
Tool Importers Global Lib File 3.47x faster equal
Tool Importers Single Env-Specific Lib File 1.82x faster equal
Tool Importers All Env-Specific Lib Files 4.79x faster equal
Tool Importers All Lib Files 4.91x faster 1.02x faster
Tool Importers All Jsonnet Files 8.35x faster equal
Tool Imports Single Static Environment 3.49x faster equal
Tool Imports Single Inline Environment File 3.56x faster equal
Validate Manifests All Validations - equal
Validate Manifests Manifest Tests Only - equal
Validate Manifests Namespace Test Only - equal

Full results available in workflow artifacts.

Benchmark run on commit a12bb7f8e04fc7e25b4342a30dace39f77eb544b

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant