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
}
names := make([]string, len(toRender))
for i, r := range toRender {
names[i] = fmt.Sprintf(" %s (%s)", r.Name, r.Chart)
}
var errs []error
// 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 {
rel := &r.state.Releases[i]
rel.Chart = releaseToChart[rel.Name]
if chart := releaseToChart[rel.Name]; chart != "" {
rel.Chart = chart
}
}
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.
//
// 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.
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 {
releaseName string
chartPath string
@ -807,8 +822,8 @@ func (st *HelmState) PrepareCharts(helm helmexec.Interface, dir string, concurre
errs := []error{}
jobQueue := make(chan *ReleaseSpec, len(st.Releases))
results := make(chan *downloadResults, len(st.Releases))
jobQueue := make(chan *ReleaseSpec, len(releases))
results := make(chan *downloadResults, len(releases))
var helm3 bool
@ -818,10 +833,10 @@ func (st *HelmState) PrepareCharts(helm helmexec.Interface, dir string, concurre
st.scatterGather(
concurrency,
len(st.Releases),
len(releases),
func() {
for i := 0; i < len(st.Releases); i++ {
jobQueue <- &st.Releases[i]
for i := 0; i < len(releases); i++ {
jobQueue <- &releases[i]
}
close(jobQueue)
},
@ -903,7 +918,7 @@ func (st *HelmState) PrepareCharts(helm helmexec.Interface, dir string, concurre
}
},
func() {
for i := 0; i < len(st.Releases); i++ {
for i := 0; i < len(releases); i++ {
downloadRes := <-results
if downloadRes.err != nil {
@ -1649,7 +1664,9 @@ func (st *HelmState) UpdateDeps(helm helmexec.Interface) []error {
func (st *HelmState) BuildDeps(helm helmexec.Interface) []error {
errs := []error{}
for _, release := range st.Releases {
releases := releasesNeedCharts(st.Releases)
for _, release := range releases {
if len(release.Chart) == 0 {
errs = append(errs, errors.New("chart is required for: "+release.Name))
continue