fix: restore SelectedReleases handling in GroupReleasesByDependency and revert snapshots

The root cause of the CI failure was that GroupReleasesByDependency was changed
to use !r.Filtered instead of opts.SelectedReleases for the DAG plan's Only field.
When no selectors are active (like helmfile destroy), all releases are unfiltered,
causing all releases to be planned for deletion - including uninstalled ones.

Fix: Use opts.SelectedReleases when provided, fall back to Filtered flag otherwise.
Also remove unnecessary SelectedReleases block from PlanReleases since
GroupReleasesByDependency now handles it directly.
Restore test snapshots from main as the behavior should now match.

Co-authored-by: yxxhero <11087727+yxxhero@users.noreply.github.com>
Agent-Logs-Url: https://github.com/helmfile/helmfile/sessions/170cecc0-7a3e-4326-98d3-4f2bffee1848
This commit is contained in:
copilot-swe-agent[bot] 2026-03-25 00:12:22 +00:00
parent 0cf7ab6908
commit ed823115f1
49 changed files with 271 additions and 285 deletions

View File

@ -2,12 +2,14 @@ merged environment: &{default map[] map[] map[]}
WARNING: release test2 needs disabled, but disabled is not installed due to installed: false. Either mark disabled as installed or remove disabled from test2's needs
2 release(s) matching app=test found in helmfile.yaml
processing 3 groups of releases in this order:
processing 4 groups of releases in this order:
GROUP RELEASES
1 default/kube-system/kubernetes-external-secrets
2 default/default/external-secrets
3 default/default/my-release
1 default/kube-system/logging
2 default/kube-system/kubernetes-external-secrets
3 default/default/external-secrets
4 default/default/my-release
processing releases in group 1/3: default/kube-system/kubernetes-external-secrets
processing releases in group 2/3: default/default/external-secrets
processing releases in group 3/3: default/default/my-release
processing releases in group 1/4: default/kube-system/logging
processing releases in group 2/4: default/kube-system/kubernetes-external-secrets
processing releases in group 3/4: default/default/external-secrets
processing releases in group 4/4: default/default/my-release

View File

@ -2,9 +2,14 @@ merged environment: &{default map[] map[] map[]}
WARNING: release test2 needs disabled, but disabled is not installed due to installed: false. Either mark disabled as installed or remove disabled from test2's needs
1 release(s) matching name=test2 found in helmfile.yaml
processing 1 groups of releases in this order:
processing 2 groups of releases in this order:
GROUP RELEASES
1 default//test2
1 default/kube-system/disabled
2 default//test2
processing releases in group 1/1: default//test2
processing releases in group 1/2: default/kube-system/disabled
processing releases in group 2/2: default//test2
WARNING: release test2 needs disabled, but disabled is not installed due to installed: false. Either mark disabled as installed or remove disabled from test2's needs
Affected releases are:
disabled (incubator/raw) DELETED

View File

@ -2,11 +2,16 @@ merged environment: &{default map[] map[] map[]}
WARNING: release test2 needs disabled, but disabled is not installed due to installed: false. Either mark disabled as installed or remove disabled from test2's needs
1 release(s) matching name=test3 found in helmfile.yaml
processing 2 groups of releases in this order:
processing 3 groups of releases in this order:
GROUP RELEASES
1 default//test2
2 default//test3
1 default/kube-system/disabled
2 default//test2
3 default//test3
processing releases in group 1/2: default//test2
processing releases in group 2/2: default//test3
processing releases in group 1/3: default/kube-system/disabled
processing releases in group 2/3: default//test2
processing releases in group 3/3: default//test3
WARNING: release test2 needs disabled, but disabled is not installed due to installed: false. Either mark disabled as installed or remove disabled from test2's needs
Affected releases are:
disabled (incubator/raw) DELETED

View File

@ -2,11 +2,13 @@ merged environment: &{default map[] map[] map[]}
WARNING: release test2 needs disabled, but disabled is not installed due to installed: false. Either mark disabled as installed or remove disabled from test2's needs
1 release(s) matching name=test2 found in helmfile.yaml
processing 1 groups of releases in this order:
processing 2 groups of releases in this order:
GROUP RELEASES
1 default//test2
1 default/kube-system/disabled
2 default//test2
processing releases in group 1/1: default//test2
processing releases in group 1/2: default/kube-system/disabled
processing releases in group 2/2: default//test2
WARNING: release test2 needs disabled, but disabled is not installed due to installed: false. Either mark disabled as installed or remove disabled from test2's needs
Affected releases are:
disabled (incubator/raw) DELETED

View File

@ -2,13 +2,15 @@ merged environment: &{default map[] map[] map[]}
WARNING: release test2 needs disabled, but disabled is not installed due to installed: false. Either mark disabled as installed or remove disabled from test2's needs
1 release(s) matching name=test3 found in helmfile.yaml
processing 2 groups of releases in this order:
processing 3 groups of releases in this order:
GROUP RELEASES
1 default//test2
2 default//test3
1 default/kube-system/disabled
2 default//test2
3 default//test3
processing releases in group 1/2: default//test2
processing releases in group 2/2: default//test3
processing releases in group 1/3: default/kube-system/disabled
processing releases in group 2/3: default//test2
processing releases in group 3/3: default//test3
WARNING: release test2 needs disabled, but disabled is not installed due to installed: false. Either mark disabled as installed or remove disabled from test2's needs
Affected releases are:
disabled (incubator/raw) DELETED

View File

@ -2,13 +2,15 @@ merged environment: &{default map[] map[] map[]}
WARNING: release test2 needs disabled, but disabled is not installed due to installed: false. Either mark disabled as installed or remove disabled from test2's needs
1 release(s) matching name=test3 found in helmfile.yaml
processing 2 groups of releases in this order:
processing 3 groups of releases in this order:
GROUP RELEASES
1 default//test2
2 default//test3
1 default/kube-system/disabled
2 default//test2
3 default//test3
processing releases in group 1/2: default//test2
processing releases in group 2/2: default//test3
processing releases in group 1/3: default/kube-system/disabled
processing releases in group 2/3: default//test2
processing releases in group 3/3: default//test3
WARNING: release test2 needs disabled, but disabled is not installed due to installed: false. Either mark disabled as installed or remove disabled from test2's needs
Affected releases are:
disabled (incubator/raw) DELETED

View File

@ -3,10 +3,10 @@ merged environment: &{default map[] map[] map[]}
processing 2 groups of releases in this order:
GROUP RELEASES
1 default/ns1/bar, default/ns2/bar
1 default/ns1/bar
2 default/ns1/foo
processing releases in group 1/2: default/ns1/bar, default/ns2/bar
processing releases in group 1/2: default/ns1/bar
processing releases in group 2/2: default/ns1/foo
Affected releases are:
bar (mychart2) DELETED

View File

@ -1,13 +1,11 @@
merged environment: &{default map[] map[] map[]}
2 release(s) found in helmfile.yaml
processing 2 groups of releases in this order:
processing 1 groups of releases in this order:
GROUP RELEASES
1 default//foo
2 default//bar
processing releases in group 1/2: default//foo
processing releases in group 2/2: default//bar
processing releases in group 1/1: default//foo
Affected releases are:
bar (mychart2) DELETED
foo (mychart1) UPDATED

View File

@ -2,15 +2,5 @@ merged environment: &{default map[] map[] map[]}
WARNING: release foo needs bar, but bar is not installed due to installed: false. Either mark bar as installed or remove bar from foo's needs
2 release(s) found in helmfile.yaml
processing 2 groups of releases in this order:
GROUP RELEASES
1 default//bar
2 default//foo
processing releases in group 1/2: default//bar
processing releases in group 2/2: default//foo
WARNING: release foo needs bar, but bar is not installed due to installed: false. Either mark bar as installed or remove bar from foo's needs
Affected releases are:
bar (mychart2) DELETED
foo (mychart1) UPDATED
err: release "default//foo" depends on "default//bar" which does not match the selectors. Please add a selector like "--selector name=bar", or indicate whether to skip (--skip-needs) or include (--include-needs) these dependencies
Failed to clean up temporary files generated while processing "helmfile.yaml": release "default//foo" depends on "default//bar" which does not match the selectors. Please add a selector like "--selector name=bar", or indicate whether to skip (--skip-needs) or include (--include-needs) these dependencies

View File

@ -2,13 +2,11 @@ merged environment: &{default map[] map[] map[]}
WARNING: release foo needs bar, but bar is not installed due to installed: false. Either mark bar as installed or remove bar from foo's needs
2 release(s) found in helmfile.yaml
processing 2 groups of releases in this order:
processing 1 groups of releases in this order:
GROUP RELEASES
1 default//bar
2 default//foo
1 default//foo
processing releases in group 1/2: default//bar
processing releases in group 2/2: default//foo
processing releases in group 1/1: default//foo
WARNING: release foo needs bar, but bar is not installed due to installed: false. Either mark bar as installed or remove bar from foo's needs
Affected releases are:
bar (mychart2) DELETED

View File

@ -2,15 +2,5 @@ merged environment: &{default map[] map[] map[]}
WARNING: release bar needs foo, but foo is not installed due to installed: false. Either mark foo as installed or remove foo from bar's needs
2 release(s) found in helmfile.yaml
processing 2 groups of releases in this order:
GROUP RELEASES
1 default//foo
2 default//bar
processing releases in group 1/2: default//foo
processing releases in group 2/2: default//bar
WARNING: release bar needs foo, but foo is not installed due to installed: false. Either mark foo as installed or remove foo from bar's needs
Affected releases are:
bar (mychart2) UPDATED
foo (mychart1) DELETED
err: release "default//bar" depends on "default//foo" which does not match the selectors. Please add a selector like "--selector name=foo", or indicate whether to skip (--skip-needs) or include (--include-needs) these dependencies
Failed to clean up temporary files generated while processing "helmfile.yaml": release "default//bar" depends on "default//foo" which does not match the selectors. Please add a selector like "--selector name=foo", or indicate whether to skip (--skip-needs) or include (--include-needs) these dependencies

View File

@ -2,13 +2,11 @@ merged environment: &{default map[] map[] map[]}
WARNING: release bar needs foo, but foo is not installed due to installed: false. Either mark foo as installed or remove foo from bar's needs
2 release(s) found in helmfile.yaml
processing 2 groups of releases in this order:
processing 1 groups of releases in this order:
GROUP RELEASES
1 default//foo
2 default//bar
1 default//bar
processing releases in group 1/2: default//foo
processing releases in group 2/2: default//bar
processing releases in group 1/1: default//bar
WARNING: release bar needs foo, but foo is not installed due to installed: false. Either mark foo as installed or remove foo from bar's needs
Affected releases are:
bar (mychart2) UPDATED

View File

@ -1,13 +1,11 @@
merged environment: &{default map[] map[] map[]}
2 release(s) found in helmfile.yaml
processing 2 groups of releases in this order:
processing 1 groups of releases in this order:
GROUP RELEASES
1 default//bar
2 default//foo
processing releases in group 1/2: default//bar
processing releases in group 2/2: default//foo
processing releases in group 1/1: default//bar
Affected releases are:
bar (mychart2) UPDATED
foo (mychart1) DELETED

View File

@ -1,11 +1,9 @@
merged environment: &{default map[] map[] map[]}
2 release(s) found in helmfile.yaml
processing 2 groups of releases in this order:
processing 1 groups of releases in this order:
GROUP RELEASES
1 default//bar
2 default//foo
processing releases in group 1/2: default//bar
processing releases in group 2/2: default//foo
processing releases in group 1/1: default//bar
No affected releases

View File

@ -6,14 +6,14 @@ GROUP RELEASES
1 default//logging, default//front-proxy
2 default//database, default//servicemesh
3 default//anotherbackend
4 default//backend-v1, default//backend-v2
5 default//frontend-v1, default//frontend-v2, default//frontend-v3
4 default//backend-v2
5 default//frontend-v2, default//frontend-v3
processing releases in group 1/5: default//logging, default//front-proxy
processing releases in group 2/5: default//database, default//servicemesh
processing releases in group 3/5: default//anotherbackend
processing releases in group 4/5: default//backend-v1, default//backend-v2
processing releases in group 5/5: default//frontend-v1, default//frontend-v2, default//frontend-v3
processing releases in group 4/5: default//backend-v2
processing releases in group 5/5: default//frontend-v2, default//frontend-v3
Affected releases are:
anotherbackend (charts/anotherbackend) UPDATED
backend-v1 (charts/backend) DELETED

View File

@ -1,13 +1,11 @@
merged environment: &{default map[] map[] map[]}
2 release(s) found in helmfile.yaml
processing 2 groups of releases in this order:
processing 1 groups of releases in this order:
GROUP RELEASES
1 foo
2 bar
processing releases in group 1/2: foo
processing releases in group 2/2: bar
processing releases in group 1/1: foo
Affected releases are:
bar (mychart2) DELETED
foo (mychart1) UPDATED

View File

@ -2,15 +2,5 @@ merged environment: &{default map[] map[] map[]}
WARNING: release foo needs bar, but bar is not installed due to installed: false. Either mark bar as installed or remove bar from foo's needs
2 release(s) found in helmfile.yaml
processing 2 groups of releases in this order:
GROUP RELEASES
1 bar
2 foo
processing releases in group 1/2: bar
processing releases in group 2/2: foo
WARNING: release foo needs bar, but bar is not installed due to installed: false. Either mark bar as installed or remove bar from foo's needs
Affected releases are:
bar (mychart2) DELETED
foo (mychart1) UPDATED
err: release "foo" depends on "bar" which does not match the selectors. Please add a selector like "--selector name=bar", or indicate whether to skip (--skip-needs) or include (--include-needs) these dependencies
Failed to clean up temporary files generated while processing "helmfile.yaml": release "foo" depends on "bar" which does not match the selectors. Please add a selector like "--selector name=bar", or indicate whether to skip (--skip-needs) or include (--include-needs) these dependencies

View File

@ -2,13 +2,11 @@ merged environment: &{default map[] map[] map[]}
WARNING: release foo needs bar, but bar is not installed due to installed: false. Either mark bar as installed or remove bar from foo's needs
2 release(s) found in helmfile.yaml
processing 2 groups of releases in this order:
processing 1 groups of releases in this order:
GROUP RELEASES
1 bar
2 foo
1 foo
processing releases in group 1/2: bar
processing releases in group 2/2: foo
processing releases in group 1/1: foo
WARNING: release foo needs bar, but bar is not installed due to installed: false. Either mark bar as installed or remove bar from foo's needs
Affected releases are:
bar (mychart2) DELETED

View File

@ -2,15 +2,5 @@ merged environment: &{default map[] map[] map[]}
WARNING: release bar needs foo, but foo is not installed due to installed: false. Either mark foo as installed or remove foo from bar's needs
2 release(s) found in helmfile.yaml
processing 2 groups of releases in this order:
GROUP RELEASES
1 foo
2 bar
processing releases in group 1/2: foo
processing releases in group 2/2: bar
WARNING: release bar needs foo, but foo is not installed due to installed: false. Either mark foo as installed or remove foo from bar's needs
Affected releases are:
bar (mychart2) UPDATED
foo (mychart1) DELETED
err: release "bar" depends on "foo" which does not match the selectors. Please add a selector like "--selector name=foo", or indicate whether to skip (--skip-needs) or include (--include-needs) these dependencies
Failed to clean up temporary files generated while processing "helmfile.yaml": release "bar" depends on "foo" which does not match the selectors. Please add a selector like "--selector name=foo", or indicate whether to skip (--skip-needs) or include (--include-needs) these dependencies

View File

@ -1,13 +1,11 @@
merged environment: &{default map[] map[] map[]}
2 release(s) found in helmfile.yaml
processing 2 groups of releases in this order:
processing 1 groups of releases in this order:
GROUP RELEASES
1 bar
2 foo
processing releases in group 1/2: bar
processing releases in group 2/2: foo
processing releases in group 1/1: bar
Affected releases are:
bar (mychart2) UPDATED
foo (mychart1) DELETED

View File

@ -1,11 +1,9 @@
merged environment: &{default map[] map[] map[]}
2 release(s) found in helmfile.yaml
processing 2 groups of releases in this order:
processing 1 groups of releases in this order:
GROUP RELEASES
1 bar
2 foo
processing releases in group 1/2: bar
processing releases in group 2/2: foo
processing releases in group 1/1: bar
No affected releases

View File

@ -6,14 +6,14 @@ GROUP RELEASES
1 logging, front-proxy
2 database, servicemesh
3 anotherbackend
4 backend-v1, backend-v2
5 frontend-v1, frontend-v2, frontend-v3
4 backend-v2
5 frontend-v2, frontend-v3
processing releases in group 1/5: logging, front-proxy
processing releases in group 2/5: database, servicemesh
processing releases in group 3/5: anotherbackend
processing releases in group 4/5: backend-v1, backend-v2
processing releases in group 5/5: frontend-v1, frontend-v2, frontend-v3
processing releases in group 4/5: backend-v2
processing releases in group 5/5: frontend-v2, frontend-v3
Affected releases are:
anotherbackend (charts/anotherbackend) UPDATED
backend-v1 (charts/backend) DELETED

View File

@ -2,12 +2,14 @@ merged environment: &{default map[] map[] map[]}
WARNING: release test2 needs disabled, but disabled is not installed due to installed: false. Either mark disabled as installed or remove disabled from test2's needs
2 release(s) matching app=test found in helmfile.yaml
processing 3 groups of releases in this order:
processing 4 groups of releases in this order:
GROUP RELEASES
1 default/kube-system/kubernetes-external-secrets
2 default/default/external-secrets
3 default/default/my-release
1 default/kube-system/logging
2 default/kube-system/kubernetes-external-secrets
3 default/default/external-secrets
4 default/default/my-release
processing releases in group 1/3: default/kube-system/kubernetes-external-secrets
processing releases in group 2/3: default/default/external-secrets
processing releases in group 3/3: default/default/my-release
processing releases in group 1/4: default/kube-system/logging
processing releases in group 2/4: default/kube-system/kubernetes-external-secrets
processing releases in group 3/4: default/default/external-secrets
processing releases in group 4/4: default/default/my-release

View File

@ -2,8 +2,10 @@ merged environment: &{default map[] map[] map[]}
WARNING: release test2 needs disabled, but disabled is not installed due to installed: false. Either mark disabled as installed or remove disabled from test2's needs
1 release(s) matching name=test2 found in helmfile.yaml
processing 1 groups of releases in this order:
processing 2 groups of releases in this order:
GROUP RELEASES
1 default//test2
1 default/kube-system/disabled
2 default//test2
processing releases in group 1/1: default//test2
processing releases in group 1/2: default/kube-system/disabled
processing releases in group 2/2: default//test2

View File

@ -2,10 +2,12 @@ merged environment: &{default map[] map[] map[]}
WARNING: release test2 needs disabled, but disabled is not installed due to installed: false. Either mark disabled as installed or remove disabled from test2's needs
1 release(s) matching name=test3 found in helmfile.yaml
processing 2 groups of releases in this order:
processing 3 groups of releases in this order:
GROUP RELEASES
1 default//test2
2 default//test3
1 default/kube-system/disabled
2 default//test2
3 default//test3
processing releases in group 1/2: default//test2
processing releases in group 2/2: default//test3
processing releases in group 1/3: default/kube-system/disabled
processing releases in group 2/3: default//test2
processing releases in group 3/3: default//test3

View File

@ -2,8 +2,10 @@ merged environment: &{default map[] map[] map[]}
WARNING: release test2 needs disabled, but disabled is not installed due to installed: false. Either mark disabled as installed or remove disabled from test2's needs
1 release(s) matching name=test2 found in helmfile.yaml
processing 1 groups of releases in this order:
processing 2 groups of releases in this order:
GROUP RELEASES
1 default//test2
1 default/kube-system/disabled
2 default//test2
processing releases in group 1/1: default//test2
processing releases in group 1/2: default/kube-system/disabled
processing releases in group 2/2: default//test2

View File

@ -2,10 +2,12 @@ merged environment: &{default map[] map[] map[]}
WARNING: release test2 needs disabled, but disabled is not installed due to installed: false. Either mark disabled as installed or remove disabled from test2's needs
1 release(s) matching name=test3 found in helmfile.yaml
processing 2 groups of releases in this order:
processing 3 groups of releases in this order:
GROUP RELEASES
1 default//test2
2 default//test3
1 default/kube-system/disabled
2 default//test2
3 default//test3
processing releases in group 1/2: default//test2
processing releases in group 2/2: default//test3
processing releases in group 1/3: default/kube-system/disabled
processing releases in group 2/3: default//test2
processing releases in group 3/3: default//test3

View File

@ -2,10 +2,12 @@ merged environment: &{default map[] map[] map[]}
WARNING: release test2 needs disabled, but disabled is not installed due to installed: false. Either mark disabled as installed or remove disabled from test2's needs
1 release(s) matching name=test3 found in helmfile.yaml
processing 2 groups of releases in this order:
processing 3 groups of releases in this order:
GROUP RELEASES
1 default//test2
2 default//test3
1 default/kube-system/disabled
2 default//test2
3 default//test3
processing releases in group 1/2: default//test2
processing releases in group 2/2: default//test3
processing releases in group 1/3: default/kube-system/disabled
processing releases in group 2/3: default//test2
processing releases in group 3/3: default//test3

View File

@ -2,12 +2,14 @@ merged environment: &{default map[] map[] map[]}
WARNING: release test2 needs disabled, but disabled is not installed due to installed: false. Either mark disabled as installed or remove disabled from test2's needs
2 release(s) matching app=test found in helmfile.yaml
processing 3 groups of releases in this order:
processing 4 groups of releases in this order:
GROUP RELEASES
1 default/kube-system/kubernetes-external-secrets
2 default/default/external-secrets
3 default/default/my-release
1 default/kube-system/logging
2 default/kube-system/kubernetes-external-secrets
3 default/default/external-secrets
4 default/default/my-release
processing releases in group 1/3: default/kube-system/kubernetes-external-secrets
processing releases in group 2/3: default/default/external-secrets
processing releases in group 3/3: default/default/my-release
processing releases in group 1/4: default/kube-system/logging
processing releases in group 2/4: default/kube-system/kubernetes-external-secrets
processing releases in group 3/4: default/default/external-secrets
processing releases in group 4/4: default/default/my-release

View File

@ -2,9 +2,11 @@ merged environment: &{default map[] map[] map[]}
WARNING: release test2 needs disabled, but disabled is not installed due to installed: false. Either mark disabled as installed or remove disabled from test2's needs
1 release(s) matching name=test2 found in helmfile.yaml
processing 1 groups of releases in this order:
processing 2 groups of releases in this order:
GROUP RELEASES
1 default//test2
1 default/kube-system/disabled
2 default//test2
processing releases in group 1/1: default//test2
processing releases in group 1/2: default/kube-system/disabled
processing releases in group 2/2: default//test2
WARNING: release test2 needs disabled, but disabled is not installed due to installed: false. Either mark disabled as installed or remove disabled from test2's needs

View File

@ -2,11 +2,13 @@ merged environment: &{default map[] map[] map[]}
WARNING: release test2 needs disabled, but disabled is not installed due to installed: false. Either mark disabled as installed or remove disabled from test2's needs
1 release(s) matching name=test3 found in helmfile.yaml
processing 2 groups of releases in this order:
processing 3 groups of releases in this order:
GROUP RELEASES
1 default//test2
2 default//test3
1 default/kube-system/disabled
2 default//test2
3 default//test3
processing releases in group 1/2: default//test2
processing releases in group 2/2: default//test3
processing releases in group 1/3: default/kube-system/disabled
processing releases in group 2/3: default//test2
processing releases in group 3/3: default//test3
WARNING: release test2 needs disabled, but disabled is not installed due to installed: false. Either mark disabled as installed or remove disabled from test2's needs

View File

@ -2,9 +2,11 @@ merged environment: &{default map[] map[] map[]}
WARNING: release test2 needs disabled, but disabled is not installed due to installed: false. Either mark disabled as installed or remove disabled from test2's needs
1 release(s) matching name=test2 found in helmfile.yaml
processing 1 groups of releases in this order:
processing 2 groups of releases in this order:
GROUP RELEASES
1 default//test2
1 default/kube-system/disabled
2 default//test2
processing releases in group 1/1: default//test2
processing releases in group 1/2: default/kube-system/disabled
processing releases in group 2/2: default//test2
WARNING: release test2 needs disabled, but disabled is not installed due to installed: false. Either mark disabled as installed or remove disabled from test2's needs

View File

@ -2,11 +2,13 @@ merged environment: &{default map[] map[] map[]}
WARNING: release test2 needs disabled, but disabled is not installed due to installed: false. Either mark disabled as installed or remove disabled from test2's needs
1 release(s) matching name=test3 found in helmfile.yaml
processing 2 groups of releases in this order:
processing 3 groups of releases in this order:
GROUP RELEASES
1 default//test2
2 default//test3
1 default/kube-system/disabled
2 default//test2
3 default//test3
processing releases in group 1/2: default//test2
processing releases in group 2/2: default//test3
processing releases in group 1/3: default/kube-system/disabled
processing releases in group 2/3: default//test2
processing releases in group 3/3: default//test3
WARNING: release test2 needs disabled, but disabled is not installed due to installed: false. Either mark disabled as installed or remove disabled from test2's needs

View File

@ -2,11 +2,13 @@ merged environment: &{default map[] map[] map[]}
WARNING: release test2 needs disabled, but disabled is not installed due to installed: false. Either mark disabled as installed or remove disabled from test2's needs
1 release(s) matching name=test3 found in helmfile.yaml
processing 2 groups of releases in this order:
processing 3 groups of releases in this order:
GROUP RELEASES
1 default//test2
2 default//test3
1 default/kube-system/disabled
2 default//test2
3 default//test3
processing releases in group 1/2: default//test2
processing releases in group 2/2: default//test3
processing releases in group 1/3: default/kube-system/disabled
processing releases in group 2/3: default//test2
processing releases in group 3/3: default//test3
WARNING: release test2 needs disabled, but disabled is not installed due to installed: false. Either mark disabled as installed or remove disabled from test2's needs

View File

@ -1,12 +1,14 @@
merged environment: &{default map[] map[] map[]}
2 release(s) matching app=test found in helmfile.yaml
processing 3 groups of releases in this order:
processing 4 groups of releases in this order:
GROUP RELEASES
1 default/kube-system/kubernetes-external-secrets
2 default/default/external-secrets
3 default/default/my-release
1 default/kube-system/logging
2 default/kube-system/kubernetes-external-secrets
3 default/default/external-secrets
4 default/default/my-release
processing releases in group 1/3: default/kube-system/kubernetes-external-secrets
processing releases in group 2/3: default/default/external-secrets
processing releases in group 3/3: default/default/my-release
processing releases in group 1/4: default/kube-system/logging
processing releases in group 2/4: default/kube-system/kubernetes-external-secrets
processing releases in group 3/4: default/default/external-secrets
processing releases in group 4/4: default/default/my-release

View File

@ -12,20 +12,16 @@ GROUP RELEASES
invoking preapply hooks for releases in group 1/2: default//bar
invoking preapply hooks for releases in group 2/2: default//foo
processing 2 groups of releases in this order:
processing 1 groups of releases in this order:
GROUP RELEASES
1 default//bar
2 default//foo
processing releases in group 1/2: default//bar
processing releases in group 2/2: default//foo
processing 2 groups of releases in this order:
processing releases in group 1/1: default//bar
processing 1 groups of releases in this order:
GROUP RELEASES
1 default//foo
2 default//bar
processing releases in group 1/2: default//foo
processing releases in group 2/2: default//bar
processing releases in group 1/1: default//foo
UPDATED RELEASES:
NAME NAMESPACE CHART VERSION DURATION

View File

@ -14,20 +14,16 @@ GROUP RELEASES
invoking preapply hooks for releases in group 1/2: default//foo
invoking preapply hooks for releases in group 2/2: default//bar
processing 2 groups of releases in this order:
GROUP RELEASES
1 default//foo
2 default//bar
processing releases in group 1/2: default//foo
processing releases in group 2/2: default//bar
processing 2 groups of releases in this order:
processing 1 groups of releases in this order:
GROUP RELEASES
1 default//bar
2 default//foo
processing releases in group 1/2: default//bar
processing releases in group 2/2: default//foo
processing releases in group 1/1: default//bar
processing 1 groups of releases in this order:
GROUP RELEASES
1 default//foo
processing releases in group 1/1: default//foo
WARNING: release foo needs bar, but bar is not installed due to installed: false. Either mark bar as installed or remove bar from foo's needs
UPDATED RELEASES:

View File

@ -14,20 +14,16 @@ GROUP RELEASES
invoking preapply hooks for releases in group 1/2: default//bar
invoking preapply hooks for releases in group 2/2: default//foo
processing 2 groups of releases in this order:
GROUP RELEASES
1 default//bar
2 default//foo
processing releases in group 1/2: default//bar
processing releases in group 2/2: default//foo
processing 2 groups of releases in this order:
processing 1 groups of releases in this order:
GROUP RELEASES
1 default//foo
2 default//bar
processing releases in group 1/2: default//foo
processing releases in group 2/2: default//bar
processing releases in group 1/1: default//foo
processing 1 groups of releases in this order:
GROUP RELEASES
1 default//bar
processing releases in group 1/1: default//bar
WARNING: release bar needs foo, but foo is not installed due to installed: false. Either mark foo as installed or remove foo from bar's needs
UPDATED RELEASES:

View File

@ -12,20 +12,16 @@ GROUP RELEASES
invoking preapply hooks for releases in group 1/2: default//foo
invoking preapply hooks for releases in group 2/2: default//bar
processing 2 groups of releases in this order:
processing 1 groups of releases in this order:
GROUP RELEASES
1 default//foo
2 default//bar
processing releases in group 1/2: default//foo
processing releases in group 2/2: default//bar
processing 2 groups of releases in this order:
processing releases in group 1/1: default//foo
processing 1 groups of releases in this order:
GROUP RELEASES
1 default//bar
2 default//foo
processing releases in group 1/2: default//bar
processing releases in group 2/2: default//foo
processing releases in group 1/1: default//bar
UPDATED RELEASES:
NAME NAMESPACE CHART VERSION DURATION

View File

@ -25,32 +25,26 @@ invoking preapply hooks for releases in group 2/5: default//backend-v1, default/
invoking preapply hooks for releases in group 3/5: default//anotherbackend
invoking preapply hooks for releases in group 4/5: default//database, default//servicemesh
invoking preapply hooks for releases in group 5/5: default//logging, default//front-proxy
processing 5 groups of releases in this order:
processing 2 groups of releases in this order:
GROUP RELEASES
1 default//frontend-v1, default//frontend-v2, default//frontend-v3
2 default//backend-v1, default//backend-v2
3 default//anotherbackend
4 default//database, default//servicemesh
5 default//logging, default//front-proxy
1 default//frontend-v1
2 default//backend-v1
processing releases in group 1/5: default//frontend-v1, default//frontend-v2, default//frontend-v3
processing releases in group 2/5: default//backend-v1, default//backend-v2
processing releases in group 3/5: default//anotherbackend
processing releases in group 4/5: default//database, default//servicemesh
processing releases in group 5/5: default//logging, default//front-proxy
processing releases in group 1/2: default//frontend-v1
processing releases in group 2/2: default//backend-v1
processing 5 groups of releases in this order:
GROUP RELEASES
1 default//logging, default//front-proxy
2 default//database, default//servicemesh
3 default//anotherbackend
4 default//backend-v1, default//backend-v2
5 default//frontend-v1, default//frontend-v2, default//frontend-v3
4 default//backend-v2
5 default//frontend-v3
processing releases in group 1/5: default//logging, default//front-proxy
processing releases in group 2/5: default//database, default//servicemesh
processing releases in group 3/5: default//anotherbackend
processing releases in group 4/5: default//backend-v1, default//backend-v2
processing releases in group 5/5: default//frontend-v1, default//frontend-v2, default//frontend-v3
processing releases in group 4/5: default//backend-v2
processing releases in group 5/5: default//frontend-v3
UPDATED RELEASES:
NAME NAMESPACE CHART VERSION DURATION

View File

@ -13,19 +13,17 @@ GROUP RELEASES
invoking preapply hooks for releases in group 1/2: default/ns1/foo
invoking preapply hooks for releases in group 2/2: default/ns1/bar, default/ns2/bar
processing 2 groups of releases in this order:
processing 1 groups of releases in this order:
GROUP RELEASES
1 default/ns1/foo
2 default/ns1/bar, default/ns2/bar
1 default/ns2/bar
processing releases in group 1/2: default/ns1/foo
processing releases in group 2/2: default/ns1/bar, default/ns2/bar
processing releases in group 1/1: default/ns2/bar
processing 2 groups of releases in this order:
GROUP RELEASES
1 default/ns1/bar, default/ns2/bar
1 default/ns1/bar
2 default/ns1/foo
processing releases in group 1/2: default/ns1/bar, default/ns2/bar
processing releases in group 1/2: default/ns1/bar
getting deployed release version failed: Failed to get the version for: mychart2
processing releases in group 2/2: default/ns1/foo
getting deployed release version failed: Failed to get the version for: mychart1

View File

@ -22,7 +22,7 @@ rendering result of "helmfile.yaml.gotmpl.part.0":
19:
merged environment: &{default map[] map[] map[]}
1 release(s) matching name=serviceA found in helmfile.yaml.gotmpl
3 release(s) matching name=serviceA found in helmfile.yaml.gotmpl
Affected releases are:
serviceA (my/chart) UPDATED

View File

@ -33,15 +33,23 @@ WARNING: release external-secrets needs kubernetes-external-secrets, but kuberne
WARNING: release external-secrets needs kubernetes-external-secrets, but kubernetes-external-secrets is not installed due to installed: false. Either mark kubernetes-external-secrets as installed or remove kubernetes-external-secrets from external-secrets's needs
Affected releases are:
external-secrets (incubator/raw) UPDATED
kubernetes-external-secrets (incubator/raw) DELETED
my-release (incubator/raw) UPDATED
invoking preapply hooks for 2 groups of releases in this order:
invoking preapply hooks for 3 groups of releases in this order:
GROUP RELEASES
1 default/default/my-release
2 default/default/external-secrets
3 default/kube-system/kubernetes-external-secrets
invoking preapply hooks for releases in group 1/2: default/default/my-release
invoking preapply hooks for releases in group 2/2: default/default/external-secrets
invoking preapply hooks for releases in group 1/3: default/default/my-release
invoking preapply hooks for releases in group 2/3: default/default/external-secrets
invoking preapply hooks for releases in group 3/3: default/kube-system/kubernetes-external-secrets
processing 1 groups of releases in this order:
GROUP RELEASES
1 default/kube-system/kubernetes-external-secrets
processing releases in group 1/1: default/kube-system/kubernetes-external-secrets
processing 2 groups of releases in this order:
GROUP RELEASES
1 default/default/external-secrets
@ -56,3 +64,8 @@ NAME NAMESPACE CHART VERSION DURATION
external-secrets default incubator/raw 3.1.0 0s
my-release default incubator/raw 3.1.0 0s
DELETED RELEASES:
NAME NAMESPACE DURATION
kubernetes-external-secrets kube-system 0s

View File

@ -35,13 +35,15 @@ Affected releases are:
external-secrets (incubator/raw) UPDATED
my-release (incubator/raw) UPDATED
invoking preapply hooks for 2 groups of releases in this order:
invoking preapply hooks for 3 groups of releases in this order:
GROUP RELEASES
1 default/default/my-release
2 default/default/external-secrets
3 default/kube-system/kubernetes-external-secrets
invoking preapply hooks for releases in group 1/2: default/default/my-release
invoking preapply hooks for releases in group 2/2: default/default/external-secrets
invoking preapply hooks for releases in group 1/3: default/default/my-release
invoking preapply hooks for releases in group 2/3: default/default/external-secrets
invoking preapply hooks for releases in group 3/3: default/kube-system/kubernetes-external-secrets
processing 2 groups of releases in this order:
GROUP RELEASES
1 default/default/external-secrets

View File

@ -38,13 +38,11 @@ GROUP RELEASES
invoking preapply hooks for releases in group 1/2: default/default/my-release
invoking preapply hooks for releases in group 2/2: default/default/external-secrets
processing 2 groups of releases in this order:
processing 1 groups of releases in this order:
GROUP RELEASES
1 default/default/external-secrets
2 default/default/my-release
processing releases in group 1/2: default/default/external-secrets
processing releases in group 2/2: default/default/my-release
processing releases in group 1/1: default/default/external-secrets
UPDATED RELEASES:
NAME NAMESPACE CHART VERSION DURATION

View File

@ -33,15 +33,23 @@ WARNING: release external-secrets needs kubernetes-external-secrets, but kuberne
WARNING: release external-secrets needs kubernetes-external-secrets, but kubernetes-external-secrets is not installed due to installed: false. Either mark kubernetes-external-secrets as installed or remove kubernetes-external-secrets from external-secrets's needs
Affected releases are:
external-secrets (incubator/raw) UPDATED
kubernetes-external-secrets (incubator/raw) DELETED
my-release (incubator/raw) UPDATED
invoking preapply hooks for 2 groups of releases in this order:
invoking preapply hooks for 3 groups of releases in this order:
GROUP RELEASES
1 default/my-release
2 default/external-secrets
3 kube-system/kubernetes-external-secrets
invoking preapply hooks for releases in group 1/2: default/my-release
invoking preapply hooks for releases in group 2/2: default/external-secrets
invoking preapply hooks for releases in group 1/3: default/my-release
invoking preapply hooks for releases in group 2/3: default/external-secrets
invoking preapply hooks for releases in group 3/3: kube-system/kubernetes-external-secrets
processing 1 groups of releases in this order:
GROUP RELEASES
1 kube-system/kubernetes-external-secrets
processing releases in group 1/1: kube-system/kubernetes-external-secrets
processing 2 groups of releases in this order:
GROUP RELEASES
1 default/external-secrets
@ -56,3 +64,8 @@ NAME NAMESPACE CHART VERSION DURATION
external-secrets default incubator/raw 3.1.0 0s
my-release default incubator/raw 3.1.0 0s
DELETED RELEASES:
NAME NAMESPACE DURATION
kubernetes-external-secrets kube-system 0s

View File

@ -35,13 +35,15 @@ Affected releases are:
external-secrets (incubator/raw) UPDATED
my-release (incubator/raw) UPDATED
invoking preapply hooks for 2 groups of releases in this order:
invoking preapply hooks for 3 groups of releases in this order:
GROUP RELEASES
1 default/my-release
2 default/external-secrets
3 kube-system/kubernetes-external-secrets
invoking preapply hooks for releases in group 1/2: default/my-release
invoking preapply hooks for releases in group 2/2: default/external-secrets
invoking preapply hooks for releases in group 1/3: default/my-release
invoking preapply hooks for releases in group 2/3: default/external-secrets
invoking preapply hooks for releases in group 3/3: kube-system/kubernetes-external-secrets
processing 2 groups of releases in this order:
GROUP RELEASES
1 default/external-secrets

View File

@ -38,13 +38,11 @@ GROUP RELEASES
invoking preapply hooks for releases in group 1/2: default/my-release
invoking preapply hooks for releases in group 2/2: default/external-secrets
processing 2 groups of releases in this order:
processing 1 groups of releases in this order:
GROUP RELEASES
1 default/external-secrets
2 default/my-release
processing releases in group 1/2: default/external-secrets
processing releases in group 2/2: default/my-release
processing releases in group 1/1: default/external-secrets
UPDATED RELEASES:
NAME NAMESPACE CHART VERSION DURATION

View File

@ -104,19 +104,6 @@ func (st *HelmState) PlanReleases(opts PlanOptions) ([][]Release, error) {
return nil, err
}
// If SelectedReleases is provided, mark those releases as not filtered
if len(opts.SelectedReleases) > 0 {
selectedIDs := make(map[string]struct{})
for _, r := range opts.SelectedReleases {
selectedIDs[ReleaseToID(&r)] = struct{}{}
}
for i := range marked {
if _, ok := selectedIDs[ReleaseToID(&marked[i].ReleaseSpec)]; ok {
marked[i].Filtered = false
}
}
}
groups, err := SortedReleaseGroups(marked, opts)
if err != nil {
return nil, err
@ -177,11 +164,22 @@ func GroupReleasesByDependency(releases []Release, opts PlanOptions) ([][]Releas
}
var selectedReleaseIDs []string
for _, r := range releases {
if !r.Filtered {
id := ReleaseToID(&r.ReleaseSpec)
if len(opts.SelectedReleases) > 0 {
// When SelectedReleases is explicitly provided (e.g., by the delete/destroy path),
// use it directly to determine which releases to plan.
for _, r := range opts.SelectedReleases {
release := r
id := ReleaseToID(&release)
selectedReleaseIDs = append(selectedReleaseIDs, id)
}
} else {
// Otherwise, use the Filtered flag set by SelectReleases/markExcludedReleases
for _, r := range releases {
if !r.Filtered {
id := ReleaseToID(&r.ReleaseSpec)
selectedReleaseIDs = append(selectedReleaseIDs, id)
}
}
}
skipDepValidation := opts.SkipNeeds