From bdbaa00628f8d6f36d0a80b802125b93e7326df3 Mon Sep 17 00:00:00 2001 From: Yusuke Kuoka Date: Thu, 5 Nov 2020 09:43:42 +0900 Subject: [PATCH] Fix redundant helm-dep-build and prepare hook regression (#1566) Fixes #1511 Fixes #1497 --- pkg/app/app_test.go | 19 ++++++++++--------- pkg/state/state.go | 17 ++++++++++++++++- 2 files changed, 26 insertions(+), 10 deletions(-) diff --git a/pkg/app/app_test.go b/pkg/app/app_test.go index aaf74fd7..3987742d 100644 --- a/pkg/app/app_test.go +++ b/pkg/app/app_test.go @@ -2237,9 +2237,14 @@ services: } type configImpl struct { - set []string - output string - skipDeps bool + selectors []string + set []string + output string + skipDeps bool +} + +func (a configImpl) Selectors() []string { + return a.selectors } func (c configImpl) Set() []string { @@ -4160,12 +4165,8 @@ releases: assert.NilError(t, err) }) - expected := "[" + - "{\"name\":\"myrelease1\",\"namespace\":\"\",\"enabled\":false,\"labels\":\"id:myrelease1\"}," + - "{\"name\":\"myrelease2\",\"namespace\":\"\",\"enabled\":true,\"labels\":\"\"}," + - "{\"name\":\"myrelease3\",\"namespace\":\"\",\"enabled\":true,\"labels\":\"\"}," + - "{\"name\":\"myrelease4\",\"namespace\":\"\",\"enabled\":true,\"labels\":\"id:myrelease1\"}" + - "]\n" + expected := `[{"name":"myrelease1","namespace":"","enabled":false,"labels":"id:myrelease1"},{"name":"myrelease2","namespace":"","enabled":true,"labels":""},{"name":"myrelease3","namespace":"","enabled":true,"labels":""},{"name":"myrelease4","namespace":"","enabled":true,"labels":"id:myrelease1"}] +` assert.Equal(t, expected, out) } diff --git a/pkg/state/state.go b/pkg/state/state.go index bc9f8221..2df11bd9 100644 --- a/pkg/state/state.go +++ b/pkg/state/state.go @@ -855,7 +855,22 @@ type chartPrepareResult struct { // // If exists, it will also patch resources by json patches, strategic-merge patches, and injectors. func (st *HelmState) PrepareCharts(helm helmexec.Interface, dir string, concurrency int, helmfileCommand string, opts ChartPrepareOptions) (map[string]string, []error) { - releases := releasesNeedCharts(st.Releases) + var selected []ReleaseSpec + + if len(st.Selectors) > 0 { + var err error + + // This and releasesNeedCharts ensures that we run operations like helm-dep-build and prepare-hook calls only on + // releases that are (1) selected by the selectors and (2) to be installed. + selected, err = st.GetSelectedReleasesWithOverrides() + if err != nil { + return nil, []error{err} + } + } else { + selected = st.Releases + } + + releases := releasesNeedCharts(selected) temp := make(map[string]string, len(releases))