Fix `helmfile lint` failure when `installed: false` (#1391)

Fixes #1344
This commit is contained in:
KUOKA Yusuke 2020-08-01 13:47:57 +09:00 committed by GitHub
parent 87573089e8
commit 85a2024669
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 28 additions and 14 deletions

View File

@ -1297,11 +1297,6 @@ func (a *App) template(r *Run, c TemplateConfigProvider) (bool, []error) {
releasesToRender[id] = r releasesToRender[id] = r
} }
names := make([]string, len(toRender))
for i, r := range toRender {
names[i] = fmt.Sprintf(" %s (%s)", r.Name, r.Chart)
}
var errs []error var errs []error
// Traverse DAG of all the releases so that we don't suffer from false-positive missing dependencies // Traverse DAG of all the releases so that we don't suffer from false-positive missing dependencies

View File

@ -68,7 +68,9 @@ func (r *Run) withPreparedCharts(forceDownload, skipRepos bool, helmfileCommand
for i := range r.state.Releases { for i := range r.state.Releases {
rel := &r.state.Releases[i] rel := &r.state.Releases[i]
rel.Chart = releaseToChart[rel.Name] if chart := releaseToChart[rel.Name]; chart != "" {
rel.Chart = chart
}
} }
r.ReleaseToChart = releaseToChart r.ReleaseToChart = releaseToChart

View File

@ -784,6 +784,19 @@ func (st *HelmState) getDeployedVersion(context helmexec.HelmContext, helm helme
} }
} }
func releasesNeedCharts(releases []ReleaseSpec) []ReleaseSpec {
var result []ReleaseSpec
for _, r := range releases {
if r.Installed != nil && !*r.Installed {
continue
}
result = append(result, r)
}
return result
}
// PrepareCharts creates temporary directories of charts. // PrepareCharts creates temporary directories of charts.
// //
// Each resulting "chart" can be one of the followings: // Each resulting "chart" can be one of the followings:
@ -798,7 +811,9 @@ func (st *HelmState) getDeployedVersion(context helmexec.HelmContext, helm helme
// //
// If exists, it will also patch resources by json patches, strategic-merge patches, and injectors. // 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, forceDownload bool) (map[string]string, []error) { func (st *HelmState) PrepareCharts(helm helmexec.Interface, dir string, concurrency int, helmfileCommand string, forceDownload bool) (map[string]string, []error) {
temp := make(map[string]string, len(st.Releases)) releases := releasesNeedCharts(st.Releases)
temp := make(map[string]string, len(releases))
type downloadResults struct { type downloadResults struct {
releaseName string releaseName string
chartPath string chartPath string
@ -807,8 +822,8 @@ func (st *HelmState) PrepareCharts(helm helmexec.Interface, dir string, concurre
errs := []error{} errs := []error{}
jobQueue := make(chan *ReleaseSpec, len(st.Releases)) jobQueue := make(chan *ReleaseSpec, len(releases))
results := make(chan *downloadResults, len(st.Releases)) results := make(chan *downloadResults, len(releases))
var helm3 bool var helm3 bool
@ -818,10 +833,10 @@ func (st *HelmState) PrepareCharts(helm helmexec.Interface, dir string, concurre
st.scatterGather( st.scatterGather(
concurrency, concurrency,
len(st.Releases), len(releases),
func() { func() {
for i := 0; i < len(st.Releases); i++ { for i := 0; i < len(releases); i++ {
jobQueue <- &st.Releases[i] jobQueue <- &releases[i]
} }
close(jobQueue) close(jobQueue)
}, },
@ -903,7 +918,7 @@ func (st *HelmState) PrepareCharts(helm helmexec.Interface, dir string, concurre
} }
}, },
func() { func() {
for i := 0; i < len(st.Releases); i++ { for i := 0; i < len(releases); i++ {
downloadRes := <-results downloadRes := <-results
if downloadRes.err != nil { if downloadRes.err != nil {
@ -1649,7 +1664,9 @@ func (st *HelmState) UpdateDeps(helm helmexec.Interface) []error {
func (st *HelmState) BuildDeps(helm helmexec.Interface) []error { func (st *HelmState) BuildDeps(helm helmexec.Interface) []error {
errs := []error{} errs := []error{}
for _, release := range st.Releases { releases := releasesNeedCharts(st.Releases)
for _, release := range releases {
if len(release.Chart) == 0 { if len(release.Chart) == 0 {
errs = append(errs, errors.New("chart is required for: "+release.Name)) errs = append(errs, errors.New("chart is required for: "+release.Name))
continue continue