mirror of
https://github.com/helmfile/helmfile.git
synced 2026-10-22 10:24:35 +02:00
Fix race on/sometimes missing postsync and cleanup hooks (#1407)
So that those hooks are fully executed as intended. The documentation about hooks are updated as well to clarify the intended behaviour. Fixes #1398
This commit is contained in:
@@ -987,6 +987,23 @@ func (a *App) apply(r *Run, c ApplyConfigProvider) (bool, bool, []error) {
|
||||
return false, false, errs
|
||||
}
|
||||
|
||||
releasesWithNoChange := map[string]state.ReleaseSpec{}
|
||||
for _, r := range toApply {
|
||||
id := state.ReleaseToID(&r)
|
||||
_, uninstalled := releasesToBeUpdated[id]
|
||||
_, updated := releasesToBeDeleted[id]
|
||||
if !uninstalled && !updated {
|
||||
releasesWithNoChange[id] = r
|
||||
}
|
||||
}
|
||||
|
||||
for id := range releasesWithNoChange {
|
||||
r := releasesWithNoChange[id]
|
||||
if _, err := st.TriggerCleanupEvent(&r, "apply"); err != nil {
|
||||
a.Logger.Warnf("warn: %v\n", err)
|
||||
}
|
||||
}
|
||||
|
||||
if releasesToBeDeleted == nil && releasesToBeUpdated == nil {
|
||||
if infoMsg != nil {
|
||||
logger := c.Logger()
|
||||
@@ -1091,6 +1108,22 @@ func (a *App) delete(r *Run, purge bool, c DestroyConfigProvider) (bool, []error
|
||||
releasesToDelete[id] = r
|
||||
}
|
||||
|
||||
releasesWithNoChange := map[string]state.ReleaseSpec{}
|
||||
for _, r := range toSync {
|
||||
id := state.ReleaseToID(&r)
|
||||
_, uninstalled := releasesToDelete[id]
|
||||
if !uninstalled {
|
||||
releasesWithNoChange[id] = r
|
||||
}
|
||||
}
|
||||
|
||||
for id := range releasesWithNoChange {
|
||||
r := releasesWithNoChange[id]
|
||||
if _, err := st.TriggerCleanupEvent(&r, "delete"); err != nil {
|
||||
a.Logger.Warnf("warn: %v\n", err)
|
||||
}
|
||||
}
|
||||
|
||||
names := make([]string, len(toSync))
|
||||
for i, r := range toSync {
|
||||
names[i] = fmt.Sprintf(" %s (%s)", r.Name, r.Chart)
|
||||
@@ -1175,6 +1208,23 @@ func (a *App) sync(r *Run, c SyncConfigProvider) (bool, []error) {
|
||||
releasesToUpdate[id] = r
|
||||
}
|
||||
|
||||
releasesWithNoChange := map[string]state.ReleaseSpec{}
|
||||
for _, r := range toSync {
|
||||
id := state.ReleaseToID(&r)
|
||||
_, uninstalled := releasesToDelete[id]
|
||||
_, updated := releasesToUpdate[id]
|
||||
if !uninstalled && !updated {
|
||||
releasesWithNoChange[id] = r
|
||||
}
|
||||
}
|
||||
|
||||
for id := range releasesWithNoChange {
|
||||
r := releasesWithNoChange[id]
|
||||
if _, err := st.TriggerCleanupEvent(&r, "sync"); err != nil {
|
||||
a.Logger.Warnf("warn: %v\n", err)
|
||||
}
|
||||
}
|
||||
|
||||
names := []string{}
|
||||
for _, r := range releasesToUpdate {
|
||||
names = append(names, fmt.Sprintf(" %s (%s) UPDATED", r.Name, r.Chart))
|
||||
|
||||
Reference in New Issue
Block a user