Fix and enhancement to repository update (#1383)

Changes:

- Prevent Helmfile from unnecessarily running `helm repo add` and `helm repo up` against repositories for unused repositories(repositories of releases filtered out by selector)
- Fixes #1330
This commit is contained in:
KUOKA Yusuke
2020-07-28 10:17:43 +09:00
committed by GitHub
parent ee8ea507a6
commit 1e260e4a5e
7 changed files with 323 additions and 245 deletions
+7 -26
View File
@@ -5,40 +5,21 @@ import (
)
type Context struct {
updatedRepos map[string]struct{}
updatedRepos map[string]bool
}
func NewContext() Context {
return Context{
updatedRepos: map[string]struct{}{},
updatedRepos: map[string]bool{},
}
}
func (ctx Context) SyncReposOnce(st *state.HelmState, helm state.RepoUpdater) []error {
var errs []error
func (ctx Context) SyncReposOnce(st *state.HelmState, helm state.RepoUpdater) error {
updated, err := st.SyncRepos(helm, ctx.updatedRepos)
hasInstalled := false
for _, release := range st.Releases {
hasInstalled = hasInstalled || release.Installed == nil || *release.Installed
for _, r := range updated {
ctx.updatedRepos[r] = true
}
if !hasInstalled {
return errs
}
allUpdated := true
for _, r := range st.Repositories {
_, exists := ctx.updatedRepos[r.Name]
allUpdated = allUpdated && exists
}
if !allUpdated {
errs = st.SyncRepos(helm)
for _, r := range st.Repositories {
ctx.updatedRepos[r.Name] = struct{}{}
}
}
return errs
return err
}