helmfile/test/integration/test-cases
yxxhero 9964a2eacb
feat: Ensure repo update is only run once (#2378)
* feat: Ensure repo update is only run once

Perform a single Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "glm-bitnami" chart repository
...Unable to get an update from the "fluent" chart repository (https://fluent.github.io/helm-charts):
	Get "https://fluent.github.io/helm-charts/index.yaml": read tcp 192.168.0.104:51893->185.199.108.153:443: read: connection reset by peer
...Unable to get an update from the "grafana" chart repository (https://grafana.github.io/helm-charts):
	Get "https://grafana.github.io/helm-charts/index.yaml": read tcp 192.168.0.104:51897->185.199.109.153:443: read: connection reset by peer
...Unable to get an update from the "ingress-nginx" chart repository (https://kubernetes.github.io/ingress-nginx):
	Get "https://kubernetes.github.io/ingress-nginx/index.yaml": read tcp 192.168.0.104:51894->185.199.110.153:443: read: connection reset by peer
...Unable to get an update from the "chartmuseum" chart repository (https://chartmuseum.github.io/charts):
	Get "https://chartmuseum.github.io/charts/index.yaml": read tcp 192.168.0.104:51896->185.199.110.153:443: read: connection reset by peer
...Successfully got an update from the "glm-chartmuseum" chart repository
...Successfully got an update from the "apollo" chart repository
...Successfully got an update from the "kyverno" chart repository
...Unable to get an update from the "mysql-operator" chart repository (https://mysql.github.io/mysql-operator/):
	Get "https://mysql.github.io/mysql-operator/index.yaml": read tcp 192.168.0.104:51903->185.199.111.153:443: read: connection reset by peer
...Unable to get an update from the "metallb" chart repository (https://metallb.github.io/metallb):
	Get "https://metallb.github.io/metallb/index.yaml": read tcp 192.168.0.104:51904->185.199.111.153:443: read: connection reset by peer
...Unable to get an update from the "dragonfly" chart repository (https://dragonflyoss.github.io/helm-charts/):
	Get "https://dragonflyoss.github.io/helm-charts/index.yaml": read tcp 192.168.0.104:51905->185.199.108.153:443: read: connection reset by peer
...Unable to get an update from the "openfga" chart repository (https://openfga.github.io/helm-charts):
	Get "https://openfga.github.io/helm-charts/index.yaml": read tcp 192.168.0.104:51907->185.199.111.153:443: read: connection reset by peer
...Unable to get an update from the "cnpg" chart repository (https://cloudnative-pg.github.io/charts):
	Get "https://cloudnative-pg.github.io/charts/index.yaml": read tcp 192.168.0.104:51910->185.199.111.153:443: read: connection reset by peer
...Unable to get an update from the "metrics-server" chart repository (https://kubernetes-sigs.github.io/metrics-server/):
	Get "https://kubernetes-sigs.github.io/metrics-server/index.yaml": read tcp 192.168.0.104:51913->185.199.111.153:443: read: connection reset by peer
...Unable to get an update from the "ot-helm" chart repository (https://ot-container-kit.github.io/helm-charts/):
	Get "https://ot-container-kit.github.io/helm-charts/index.yaml": read tcp 192.168.0.104:51914->185.199.111.153:443: read: connection reset by peer
...Unable to get an update from the "coredns" chart repository (https://coredns.github.io/helm):
	Get "https://coredns.github.io/helm/index.yaml": read tcp 192.168.0.104:51917->185.199.111.153:443: read: connection reset by peer
...Unable to get an update from the "redis-operator" chart repository (https://ot-container-kit.github.io/helm-charts/):
	Get "https://ot-container-kit.github.io/helm-charts/index.yaml": read tcp 192.168.0.104:51912->185.199.111.153:443: read: connection reset by peer
...Unable to get an update from the "andrcuns" chart repository (https://andrcuns.github.io/charts):
	Get "https://andrcuns.github.io/charts/index.yaml": read tcp 192.168.0.104:51915->185.199.111.153:443: read: connection reset by peer
...Successfully got an update from the "gitlab-jh" chart repository
...Successfully got an update from the "hashicorp" chart repository
...Successfully got an update from the "incubator" chart repository
...Successfully got an update from the "jenkins" chart repository
...Successfully got an update from the "nvidia" chart repository
...Successfully got an update from the "elastic" chart repository
...Successfully got an update from the "projectcalico" chart repository
...Unable to get an update from the "juicefs" chart repository (https://juicedata.github.io/charts/):
	Get "https://juicedata.github.io/charts/index.yaml": read tcp 192.168.0.104:51919->185.199.111.153:443: read: connection reset by peer
...Successfully got an update from the "bitnami" chart repository
Update Complete. ⎈Happy Helming!⎈ before running any
commands, allowing us to safely pass --skip-refresh to avoid redundant
repo updates for each chart with external dependencies.

This reduces the number of repository refresh operations from O(n) to O(1)
where n is the number of charts with remote dependencies.

Co-authored-by: Javex <github@javex.eu>
Signed-off-by: yxxhero <aiopsclub@163.com>

* fix: ensure repo update only runs when repositories are configured

This fixes CI issues where tests fail with 'no repositories found' error.

The PR #2378 adds a single helm.UpdateRepo() call before running helm dep
build commands. However, when no repositories are configured, this call
fails. The fix adds a check for len(st.Repositories) > 0 before calling
UpdateRepo().

Additionally, updated snapshot files to reflect the new output ordering
where repo update happens before building dependencies.

Signed-off-by: yxxhero <aiopsclub@163.com>

* feat: Update test snapshots for single repo update

The code changes in PR #2378 ensure that helm repo update is only run once
before building dependencies. This requires updating test snapshots to include
the 'Updating repo' output that now appears before 'Building dependency' messages.

Updated snapshots:
- chart_need/output.yaml
- chart_need_enable_live_output/output.yaml
- release_template_inheritance/output.yaml
- environments_releases_without_same_yaml_part/output.yaml
- environment_missing_in_subhelmfile/output.yaml
- pr_560/output.yaml
- environments_values_gotmpl_with_environment_name/output.yaml
- postrenderer/output.yaml (fixed YAML structure)
- oci_need/output.yaml

Signed-off-by: yxxhero <aiopsclub@163.com>

* fix: Correctly update test snapshots based on repository configuration

Only update snapshots for tests that have repositories defined:
- chart_need/output.yaml (has repositories - shows 'Updating repo')
- chart_need_enable_live_output/output.yaml (has repositories - shows 'Updating repo')
- release_template_inheritance/output.yaml (has repositories - shows 'Updating repo')

Tests without repositories should NOT show 'Updating repo':
- environments_releases_without_same_yaml_part/output.yaml
- environments_values_gotmpl_with_environment_name/output.yaml
- pr_560/output.yaml
- environment_missing_in_subhelmfile/output.yaml
- postrenderer/output.yaml (uses OCI dependencies)
- oci_need/output.yaml (uses OCI dependencies)

This matches the conditional logic in the code that only runs
helm.UpdateRepo() when len(st.Repositories) > 0.

Signed-off-by: yxxhero <aiopsclub@163.com>

* fix: correct snapshot test expectations for repo update optimization

- Re-add trailing newlines to environment_missing_in_subhelmfile output
- Restore correct chart paths (/... instead of ../../...)
- Restore postrenderer output with cm2 ConfigMap and correct field order
- Fixes CI test failures introduced by incorrect snapshot updates

Signed-off-by: yxxhero <aiopsclub@163.com>

* fix: update integration test expected lint output for repo update

Include 'Updating repo' messages in expected lint output files
to match the new behavior where helm repo update is run once
before building dependencies.

Signed-off-by: yxxhero <aiopsclub@163.com>

* fix: remove extra blank line from lint output files

Integration test output files had an extra blank line that was
not present in the expected output, causing test failures.

Signed-off-by: yxxhero <aiopsclub@163.com>

* fix: update lint output for single repo update

With the repo update optimization, lint runs only once
with 'Updating repo' messages instead of running twice.
Update expected output to match new single-run behavior.

Signed-off-by: yxxhero <aiopsclub@163.com>

* fix: filter out repo update messages in lint test

Update test runner to filter out repo update messages that are
now generated by the single helm.UpdateRepo() call, keeping
the expected lint output consistent with the original behavior.

Signed-off-by: yxxhero <aiopsclub@163.com>

* fix: filter repo update messages from diff test

Filter out repo update messages in diff test output to
match new behavior where helm.UpdateRepo() is called once.

Signed-off-by: yxxhero <aiopsclub@163.com>

* Fix missing closing parenthesis in grep command

Signed-off-by: yxxhero <aiopsclub@163.com>

* fix: prevent --args flags from being passed to helm repo commands

When helmfile template --args is used, the extra flags were being
passed to helm repo update and helm repo add commands, which don't
support all flags that helm template/install support. This caused
failures when flags like --dry-run were passed via --args.

The fix saves the extra flags before executing helm repo commands,
clears them, and restores them afterwards to ensure repo commands
run without unsupported flags.

Fixes CI issue in PR #2378 where test issue-1749 fails
with "Error: unknown flag: --dry-run" during helm repo update.

Signed-off-by: yxxhero <aiopsclub@163.com>

---------

Signed-off-by: yxxhero <aiopsclub@163.com>
Co-authored-by: Javex <github@javex.eu>
2026-01-29 19:15:44 -05:00
..
chart-needs feat: add Helm 4 support while maintaining Helm 3 compatibility (#2262) 2025-11-19 07:49:30 +08:00
chartify feat: add Helm 4 support while maintaining Helm 3 compatibility (#2262) 2025-11-19 07:49:30 +08:00
chartify-jsonPatches-and-strategicMergePatches Remove all v0.x references (#1919) 2025-03-08 07:43:21 -06:00
chartify-with-non-chart-dir build: update Helm and plugin versions in CI and Dockerfiles (#2059) 2025-05-30 11:45:28 +08:00
cli-overwrite-environment-values Remove all v0.x references (#1919) 2025-03-08 07:43:21 -06:00
deps-kustomization-i-1402/input skip helm dep up for kustomizations (#1424) 2024-03-26 07:45:39 +08:00
deps-mr-1011/input run deps without chart preparation (#1011) 2024-02-14 17:16:48 +08:00
diff-args feat: add Helm 4 support while maintaining Helm 3 compatibility (#2262) 2025-11-19 07:49:30 +08:00
fetch-forl-local-chart/input refactor(filesystem): add CopyDir method and optimize Fetch function (#2111) 2025-07-28 16:10:25 -04:00
happypath Remove all v0.x references (#1919) 2025-03-08 07:43:21 -06:00
hcl-secrets Feature/support env hcl and interpolations (#1423) 2024-04-22 08:02:14 +08:00
helmfile-double-fetch/input fix: oci pull directory conflict when download twice (#914) 2023-07-23 21:10:03 +08:00
include-template-func feat: include func support more template functions (#1277) 2024-01-09 14:33:50 +08:00
issue-1749/input Ensure 'helm repo add' is also not pollute on helmfile template (#1887) 2025-01-22 20:42:33 +08:00
issue-1893/input Chartify v0.20.8 update (#1908) 2025-02-05 21:42:05 +08:00
issue-2247 Fix four critical bugs: array merging (#2281), AWS SDK logging (#2270), helmDefaults skip flags (#2269), and OCI chart versions (#2247) (#2288) 2025-11-22 09:27:51 +08:00
issue-2271/input 🐛 Fix four critical issues: environment merging, kubeVersion detection, lookup() with kustomize, and Helm 4 color flags (#2276) 2025-11-21 08:32:54 +08:00
issue-2275/input 🐛 Fix four critical issues: environment merging, kubeVersion detection, lookup() with kustomize, and Helm 4 color flags (#2276) 2025-11-21 08:32:54 +08:00
issue-2280/input 🐛 Fix four critical issues: environment merging, kubeVersion detection, lookup() with kustomize, and Helm 4 color flags (#2276) 2025-11-21 08:32:54 +08:00
issue-2281-array-merge Fix four critical bugs: array merging (#2281), AWS SDK logging (#2270), helmDefaults skip flags (#2269), and OCI chart versions (#2247) (#2288) 2025-11-22 09:27:51 +08:00
issue-2291/input test: add integration test for issue #2291 (CRD preservation with strategicMergePatches) (#2292) 2025-11-25 09:19:41 +08:00
issue-2297-local-chart-transformers/input fix: resolve issues #2295, #2296, and #2297 (#2298) 2025-11-27 22:13:03 +08:00
issue-2309-kube-context-template fix: pass --kube-context to helm template when using jsonPatches (#2363) 2026-01-16 20:32:33 +08:00
issue-2353-layer-array-replace fix: array merge regression - layer arrays now replace defaults (#2367) 2026-01-18 14:04:54 +08:00
issue-2355/input fix: resolve --validate flag conflict with kustomize in Helm 4 (#2362) 2026-01-18 13:59:55 +08:00
kustomized-fetch/input fix fetch does not work with kustomized releases (#624) 2023-01-15 09:19:01 +08:00
oci-parallel-pull/input fix: resolve issues #2295, #2296, and #2297 (#2298) 2025-11-27 22:13:03 +08:00
postrender feat: upgrade Helm version to v3.20.0 and v4.1.0 (#2373) 2026-01-23 12:02:58 +08:00
regression/input Remove all v0.x references (#1919) 2025-03-08 07:43:21 -06:00
secretssops Remove all v0.x references (#1919) 2025-03-08 07:43:21 -06:00
skip-diff-output build: update Helm and plugin versions in CI and Dockerfiles (#2059) 2025-05-30 11:45:28 +08:00
state-values-set-cli-args-in-environments feat: inject cli state values (--state-values-set) into environment templating context (#1917) 2025-02-14 20:49:07 +08:00
suppress-output-line-regex Fix 2337 helm4 stale repo indexes (#2369) 2026-01-21 19:55:56 -05:00
v1-subhelmfile-multi-bases-with-array-values Remove all v0.x references (#1919) 2025-03-08 07:43:21 -06:00
yaml-overwrite Use gopkg.in/yaml.v2 for Helmfile v0.x (#609) 2023-01-04 18:17:24 +09:00
chart-needs.sh feat: Ensure repo update is only run once (#2378) 2026-01-29 19:15:44 -05:00
chartify-jsonPatches-and-strategicMergePatches.sh feat: add Helm 4 support while maintaining Helm 3 compatibility (#2262) 2025-11-19 07:49:30 +08:00
chartify-with-non-chart-dir.sh feat: add Helm 4 support while maintaining Helm 3 compatibility (#2262) 2025-11-19 07:49:30 +08:00
chartify.sh feat: add Helm 4 support while maintaining Helm 3 compatibility (#2262) 2025-11-19 07:49:30 +08:00
cli-overwrite-environment-values.sh feat: add Helm 4 support while maintaining Helm 3 compatibility (#2262) 2025-11-19 07:49:30 +08:00
deps-kustomization-i-1402.sh skip helm dep up for kustomizations (#1424) 2024-03-26 07:45:39 +08:00
deps-mr-1011.sh run deps without chart preparation (#1011) 2024-02-14 17:16:48 +08:00
diff-args.sh feat: add Helm 4 support while maintaining Helm 3 compatibility (#2262) 2025-11-19 07:49:30 +08:00
fetch-forl-local-chart.sh feat: add Helm 4 support while maintaining Helm 3 compatibility (#2262) 2025-11-19 07:49:30 +08:00
happypath.sh feat: add Helm 4 support while maintaining Helm 3 compatibility (#2262) 2025-11-19 07:49:30 +08:00
hcl-secrets.sh build(deps): update Helm v4 to 4.0.1 and helm-secrets to 4.7.4 (#2304) 2025-11-28 08:43:54 +08:00
helmfile-double-fetch.sh feat: add Helm 4 support while maintaining Helm 3 compatibility (#2262) 2025-11-19 07:49:30 +08:00
include-template-func.sh feat: add Helm 4 support while maintaining Helm 3 compatibility (#2262) 2025-11-19 07:49:30 +08:00
issue-1749.sh Add integration tests for #1749 (#1766) 2024-11-06 08:12:20 +08:00
issue-1893.sh feat: add Helm 4 support while maintaining Helm 3 compatibility (#2262) 2025-11-19 07:49:30 +08:00
issue-2247.sh test: add integration test for issue #2291 (CRD preservation with strategicMergePatches) (#2292) 2025-11-25 09:19:41 +08:00
issue-2271.sh 🐛 Fix four critical issues: environment merging, kubeVersion detection, lookup() with kustomize, and Helm 4 color flags (#2276) 2025-11-21 08:32:54 +08:00
issue-2275.sh 🐛 Fix four critical issues: environment merging, kubeVersion detection, lookup() with kustomize, and Helm 4 color flags (#2276) 2025-11-21 08:32:54 +08:00
issue-2280.sh 🐛 Fix four critical issues: environment merging, kubeVersion detection, lookup() with kustomize, and Helm 4 color flags (#2276) 2025-11-21 08:32:54 +08:00
issue-2281-array-merge.sh Fix four critical bugs: array merging (#2281), AWS SDK logging (#2270), helmDefaults skip flags (#2269), and OCI chart versions (#2247) (#2288) 2025-11-22 09:27:51 +08:00
issue-2291.sh test: add integration test for issue #2291 (CRD preservation with strategicMergePatches) (#2292) 2025-11-25 09:19:41 +08:00
issue-2297-local-chart-transformers.sh fix: resolve issues #2295, #2296, and #2297 (#2298) 2025-11-27 22:13:03 +08:00
issue-2309-kube-context-template.sh fix: pass --kube-context to helm template when using jsonPatches (#2363) 2026-01-16 20:32:33 +08:00
issue-2353-layer-array-replace.sh fix: array merge regression - layer arrays now replace defaults (#2367) 2026-01-18 14:04:54 +08:00
issue-2355.sh fix: resolve --validate flag conflict with kustomize in Helm 4 (#2362) 2026-01-18 13:59:55 +08:00
kustomized-fetch.sh feat: add Helm 4 support while maintaining Helm 3 compatibility (#2262) 2025-11-19 07:49:30 +08:00
oci-parallel-pull.sh fix: resolve issues #2295, #2296, and #2297 (#2298) 2025-11-27 22:13:03 +08:00
postrender.sh feat: add Helm 4 support while maintaining Helm 3 compatibility (#2262) 2025-11-19 07:49:30 +08:00
regression.sh feat: add Helm 4 support while maintaining Helm 3 compatibility (#2262) 2025-11-19 07:49:30 +08:00
secretssops.sh build(deps): update Helm v4 to 4.0.1 and helm-secrets to 4.7.4 (#2304) 2025-11-28 08:43:54 +08:00
skip-diff-output.sh feat: add Helm 4 support while maintaining Helm 3 compatibility (#2262) 2025-11-19 07:49:30 +08:00
state-values-set-cli-args-in-environments.sh feat: add Helm 4 support while maintaining Helm 3 compatibility (#2262) 2025-11-19 07:49:30 +08:00
suppress-output-line-regex.sh feat: add Helm 4 support while maintaining Helm 3 compatibility (#2262) 2025-11-19 07:49:30 +08:00
v1-subhelmfile-multi-bases-with-array-values.sh feat: add Helm 4 support while maintaining Helm 3 compatibility (#2262) 2025-11-19 07:49:30 +08:00
yaml-overwrite.sh feat: add Helm 4 support while maintaining Helm 3 compatibility (#2262) 2025-11-19 07:49:30 +08:00