fix: cleanup hooks not receiving error signal
Closes #1041 Signed-off-by: Felipe Santos <felipecassiors@gmail.com>
This commit is contained in:
		
							parent
							
								
									29babda186
								
							
						
					
					
						commit
						47b41fbaf6
					
				| 
						 | 
					@ -146,8 +146,9 @@ func (a *App) DeprecatedSyncCharts(c DeprecatedChartsConfigProvider) error {
 | 
				
			||||||
			SkipRepos:   true,
 | 
								SkipRepos:   true,
 | 
				
			||||||
			SkipDeps:    true,
 | 
								SkipDeps:    true,
 | 
				
			||||||
			Concurrency: 2,
 | 
								Concurrency: 2,
 | 
				
			||||||
		}, func() {
 | 
							}, func() []error {
 | 
				
			||||||
			errs = run.DeprecatedSyncCharts(c)
 | 
								errs = run.DeprecatedSyncCharts(c)
 | 
				
			||||||
 | 
								return errs
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
| 
						 | 
					@ -181,8 +182,9 @@ func (a *App) Diff(c DiffConfigProvider) error {
 | 
				
			||||||
			Validate:               c.Validate(),
 | 
								Validate:               c.Validate(),
 | 
				
			||||||
			Concurrency:            c.Concurrency(),
 | 
								Concurrency:            c.Concurrency(),
 | 
				
			||||||
			IncludeTransitiveNeeds: c.IncludeNeeds(),
 | 
								IncludeTransitiveNeeds: c.IncludeNeeds(),
 | 
				
			||||||
		}, func() {
 | 
							}, func() []error {
 | 
				
			||||||
			msg, matched, affected, errs = a.diff(run, c)
 | 
								msg, matched, affected, errs = a.diff(run, c)
 | 
				
			||||||
 | 
								return errs
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if msg != nil {
 | 
							if msg != nil {
 | 
				
			||||||
| 
						 | 
					@ -249,8 +251,9 @@ func (a *App) Template(c TemplateConfigProvider) error {
 | 
				
			||||||
			IncludeTransitiveNeeds: c.IncludeNeeds(),
 | 
								IncludeTransitiveNeeds: c.IncludeNeeds(),
 | 
				
			||||||
			Set:                    c.Set(),
 | 
								Set:                    c.Set(),
 | 
				
			||||||
			KubeVersion:            c.KubeVersion(),
 | 
								KubeVersion:            c.KubeVersion(),
 | 
				
			||||||
		}, func() {
 | 
							}, func() []error {
 | 
				
			||||||
			ok, errs = a.template(run, c)
 | 
								ok, errs = a.template(run, c)
 | 
				
			||||||
 | 
								return errs
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if prepErr != nil {
 | 
							if prepErr != nil {
 | 
				
			||||||
| 
						 | 
					@ -268,8 +271,9 @@ func (a *App) WriteValues(c WriteValuesConfigProvider) error {
 | 
				
			||||||
			SkipDeps:    c.SkipDeps(),
 | 
								SkipDeps:    c.SkipDeps(),
 | 
				
			||||||
			SkipCleanup: c.SkipCleanup(),
 | 
								SkipCleanup: c.SkipCleanup(),
 | 
				
			||||||
			Concurrency: c.Concurrency(),
 | 
								Concurrency: c.Concurrency(),
 | 
				
			||||||
		}, func() {
 | 
							}, func() []error {
 | 
				
			||||||
			ok, errs = a.writeValues(run, c)
 | 
								ok, errs = a.writeValues(run, c)
 | 
				
			||||||
 | 
								return errs
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if prepErr != nil {
 | 
							if prepErr != nil {
 | 
				
			||||||
| 
						 | 
					@ -320,8 +324,9 @@ func (a *App) Lint(c LintConfigProvider) error {
 | 
				
			||||||
			SkipCleanup:            c.SkipCleanup(),
 | 
								SkipCleanup:            c.SkipCleanup(),
 | 
				
			||||||
			Concurrency:            c.Concurrency(),
 | 
								Concurrency:            c.Concurrency(),
 | 
				
			||||||
			IncludeTransitiveNeeds: c.IncludeNeeds(),
 | 
								IncludeTransitiveNeeds: c.IncludeNeeds(),
 | 
				
			||||||
		}, func() {
 | 
							}, func() []error {
 | 
				
			||||||
			ok, lintErrs, errs = a.lint(run, c)
 | 
								ok, lintErrs, errs = a.lint(run, c)
 | 
				
			||||||
 | 
								return errs
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if prepErr != nil {
 | 
							if prepErr != nil {
 | 
				
			||||||
| 
						 | 
					@ -355,7 +360,8 @@ func (a *App) Fetch(c FetchConfigProvider) error {
 | 
				
			||||||
			OutputDir:         c.OutputDir(),
 | 
								OutputDir:         c.OutputDir(),
 | 
				
			||||||
			OutputDirTemplate: c.OutputDirTemplate(),
 | 
								OutputDirTemplate: c.OutputDirTemplate(),
 | 
				
			||||||
			Concurrency:       c.Concurrency(),
 | 
								Concurrency:       c.Concurrency(),
 | 
				
			||||||
		}, func() {
 | 
							}, func() []error {
 | 
				
			||||||
 | 
								return nil
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if prepErr != nil {
 | 
							if prepErr != nil {
 | 
				
			||||||
| 
						 | 
					@ -379,8 +385,9 @@ func (a *App) Sync(c SyncConfigProvider) error {
 | 
				
			||||||
			IncludeTransitiveNeeds: c.IncludeNeeds(),
 | 
								IncludeTransitiveNeeds: c.IncludeNeeds(),
 | 
				
			||||||
			Validate:               c.Validate(),
 | 
								Validate:               c.Validate(),
 | 
				
			||||||
			Concurrency:            c.Concurrency(),
 | 
								Concurrency:            c.Concurrency(),
 | 
				
			||||||
		}, func() {
 | 
							}, func() []error {
 | 
				
			||||||
			ok, errs = a.sync(run, c)
 | 
								ok, errs = a.sync(run, c)
 | 
				
			||||||
 | 
								return errs
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if prepErr != nil {
 | 
							if prepErr != nil {
 | 
				
			||||||
| 
						 | 
					@ -413,7 +420,7 @@ func (a *App) Apply(c ApplyConfigProvider) error {
 | 
				
			||||||
			Validate:               c.Validate(),
 | 
								Validate:               c.Validate(),
 | 
				
			||||||
			Concurrency:            c.Concurrency(),
 | 
								Concurrency:            c.Concurrency(),
 | 
				
			||||||
			IncludeTransitiveNeeds: c.IncludeNeeds(),
 | 
								IncludeTransitiveNeeds: c.IncludeNeeds(),
 | 
				
			||||||
		}, func() {
 | 
							}, func() []error {
 | 
				
			||||||
			matched, updated, es := a.apply(run, c)
 | 
								matched, updated, es := a.apply(run, c)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			mut.Lock()
 | 
								mut.Lock()
 | 
				
			||||||
| 
						 | 
					@ -421,6 +428,7 @@ func (a *App) Apply(c ApplyConfigProvider) error {
 | 
				
			||||||
			mut.Unlock()
 | 
								mut.Unlock()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			ok, errs = matched, es
 | 
								ok, errs = matched, es
 | 
				
			||||||
 | 
								return errs
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if prepErr != nil {
 | 
							if prepErr != nil {
 | 
				
			||||||
| 
						 | 
					@ -449,8 +457,9 @@ func (a *App) Status(c StatusesConfigProvider) error {
 | 
				
			||||||
			SkipRepos:   true,
 | 
								SkipRepos:   true,
 | 
				
			||||||
			SkipDeps:    true,
 | 
								SkipDeps:    true,
 | 
				
			||||||
			Concurrency: c.Concurrency(),
 | 
								Concurrency: c.Concurrency(),
 | 
				
			||||||
		}, func() {
 | 
							}, func() []error {
 | 
				
			||||||
			ok, errs = a.status(run, c)
 | 
								ok, errs = a.status(run, c)
 | 
				
			||||||
 | 
								return errs
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
| 
						 | 
					@ -471,8 +480,9 @@ func (a *App) Delete(c DeleteConfigProvider) error {
 | 
				
			||||||
				Concurrency:   c.Concurrency(),
 | 
									Concurrency:   c.Concurrency(),
 | 
				
			||||||
				DeleteWait:    c.DeleteWait(),
 | 
									DeleteWait:    c.DeleteWait(),
 | 
				
			||||||
				DeleteTimeout: c.DeleteTimeout(),
 | 
									DeleteTimeout: c.DeleteTimeout(),
 | 
				
			||||||
			}, func() {
 | 
								}, func() []error {
 | 
				
			||||||
				ok, errs = a.delete(run, c.Purge(), c)
 | 
									ok, errs = a.delete(run, c.Purge(), c)
 | 
				
			||||||
 | 
									return errs
 | 
				
			||||||
			})
 | 
								})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			if err != nil {
 | 
								if err != nil {
 | 
				
			||||||
| 
						 | 
					@ -494,8 +504,9 @@ func (a *App) Destroy(c DestroyConfigProvider) error {
 | 
				
			||||||
				Concurrency:   c.Concurrency(),
 | 
									Concurrency:   c.Concurrency(),
 | 
				
			||||||
				DeleteWait:    c.DeleteWait(),
 | 
									DeleteWait:    c.DeleteWait(),
 | 
				
			||||||
				DeleteTimeout: c.DeleteTimeout(),
 | 
									DeleteTimeout: c.DeleteTimeout(),
 | 
				
			||||||
			}, func() {
 | 
								}, func() []error {
 | 
				
			||||||
				ok, errs = a.delete(run, true, c)
 | 
									ok, errs = a.delete(run, true, c)
 | 
				
			||||||
 | 
									return errs
 | 
				
			||||||
			})
 | 
								})
 | 
				
			||||||
			if err != nil {
 | 
								if err != nil {
 | 
				
			||||||
				errs = append(errs, err)
 | 
									errs = append(errs, err)
 | 
				
			||||||
| 
						 | 
					@ -519,8 +530,9 @@ func (a *App) Test(c TestConfigProvider) error {
 | 
				
			||||||
			SkipRepos:   c.SkipDeps(),
 | 
								SkipRepos:   c.SkipDeps(),
 | 
				
			||||||
			SkipDeps:    c.SkipDeps(),
 | 
								SkipDeps:    c.SkipDeps(),
 | 
				
			||||||
			Concurrency: c.Concurrency(),
 | 
								Concurrency: c.Concurrency(),
 | 
				
			||||||
		}, func() {
 | 
							}, func() []error {
 | 
				
			||||||
			errs = a.test(run, c)
 | 
								errs = a.test(run, c)
 | 
				
			||||||
 | 
								return errs
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
| 
						 | 
					@ -538,11 +550,12 @@ func (a *App) PrintDAGState(c DAGConfigProvider) error {
 | 
				
			||||||
			SkipRepos:   true,
 | 
								SkipRepos:   true,
 | 
				
			||||||
			SkipDeps:    true,
 | 
								SkipDeps:    true,
 | 
				
			||||||
			Concurrency: 2,
 | 
								Concurrency: 2,
 | 
				
			||||||
		}, func() {
 | 
							}, func() []error {
 | 
				
			||||||
			err = a.dag(run)
 | 
								err = a.dag(run)
 | 
				
			||||||
			if err != nil {
 | 
								if err != nil {
 | 
				
			||||||
				errs = append(errs, err)
 | 
									errs = append(errs, err)
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
								return errs
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
		return ok, errs
 | 
							return ok, errs
 | 
				
			||||||
	}, false, SetFilter(true))
 | 
						}, false, SetFilter(true))
 | 
				
			||||||
| 
						 | 
					@ -554,7 +567,7 @@ func (a *App) PrintState(c StateConfigProvider) error {
 | 
				
			||||||
			SkipRepos:   true,
 | 
								SkipRepos:   true,
 | 
				
			||||||
			SkipDeps:    true,
 | 
								SkipDeps:    true,
 | 
				
			||||||
			Concurrency: 2,
 | 
								Concurrency: 2,
 | 
				
			||||||
		}, func() {
 | 
							}, func() []error {
 | 
				
			||||||
			if c.EmbedValues() {
 | 
								if c.EmbedValues() {
 | 
				
			||||||
				for i := range run.state.Releases {
 | 
									for i := range run.state.Releases {
 | 
				
			||||||
					r := run.state.Releases[i]
 | 
										r := run.state.Releases[i]
 | 
				
			||||||
| 
						 | 
					@ -562,7 +575,7 @@ func (a *App) PrintState(c StateConfigProvider) error {
 | 
				
			||||||
					values, err := run.state.LoadYAMLForEmbedding(&r, r.Values, r.MissingFileHandler, r.ValuesPathPrefix)
 | 
										values, err := run.state.LoadYAMLForEmbedding(&r, r.Values, r.MissingFileHandler, r.ValuesPathPrefix)
 | 
				
			||||||
					if err != nil {
 | 
										if err != nil {
 | 
				
			||||||
						errs = []error{err}
 | 
											errs = []error{err}
 | 
				
			||||||
						return
 | 
											return errs
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
					run.state.Releases[i].Values = values
 | 
										run.state.Releases[i].Values = values
 | 
				
			||||||
| 
						 | 
					@ -570,7 +583,7 @@ func (a *App) PrintState(c StateConfigProvider) error {
 | 
				
			||||||
					secrets, err := run.state.LoadYAMLForEmbedding(&r, r.Secrets, r.MissingFileHandler, r.ValuesPathPrefix)
 | 
										secrets, err := run.state.LoadYAMLForEmbedding(&r, r.Secrets, r.MissingFileHandler, r.ValuesPathPrefix)
 | 
				
			||||||
					if err != nil {
 | 
										if err != nil {
 | 
				
			||||||
						errs = []error{err}
 | 
											errs = []error{err}
 | 
				
			||||||
						return
 | 
											return errs
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
					run.state.Releases[i].Secrets = secrets
 | 
										run.state.Releases[i].Secrets = secrets
 | 
				
			||||||
| 
						 | 
					@ -580,17 +593,18 @@ func (a *App) PrintState(c StateConfigProvider) error {
 | 
				
			||||||
			stateYaml, err := run.state.ToYaml()
 | 
								stateYaml, err := run.state.ToYaml()
 | 
				
			||||||
			if err != nil {
 | 
								if err != nil {
 | 
				
			||||||
				errs = []error{err}
 | 
									errs = []error{err}
 | 
				
			||||||
				return
 | 
									return errs
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			sourceFile, err := run.state.FullFilePath()
 | 
								sourceFile, err := run.state.FullFilePath()
 | 
				
			||||||
			if err != nil {
 | 
								if err != nil {
 | 
				
			||||||
				errs = []error{err}
 | 
									errs = []error{err}
 | 
				
			||||||
				return
 | 
									return errs
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			fmt.Printf("---\n#  Source: %s\n\n%+v", sourceFile, stateYaml)
 | 
								fmt.Printf("---\n#  Source: %s\n\n%+v", sourceFile, stateYaml)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			errs = []error{}
 | 
								errs = []error{}
 | 
				
			||||||
 | 
								return errs
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
| 
						 | 
					@ -626,12 +640,13 @@ func (a *App) ListReleases(c ListConfigProvider) error {
 | 
				
			||||||
				SkipRepos:   true,
 | 
									SkipRepos:   true,
 | 
				
			||||||
				SkipDeps:    true,
 | 
									SkipDeps:    true,
 | 
				
			||||||
				Concurrency: 2,
 | 
									Concurrency: 2,
 | 
				
			||||||
			}, func() {
 | 
								}, func() []error {
 | 
				
			||||||
				rel, err := a.list(run)
 | 
									rel, err := a.list(run)
 | 
				
			||||||
				if err != nil {
 | 
									if err != nil {
 | 
				
			||||||
					panic(err)
 | 
										panic(err)
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				stateReleases = rel
 | 
									stateReleases = rel
 | 
				
			||||||
 | 
									return nil
 | 
				
			||||||
			})
 | 
								})
 | 
				
			||||||
		} else {
 | 
							} else {
 | 
				
			||||||
			stateReleases, err = a.list(run)
 | 
								stateReleases, err = a.list(run)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -55,7 +55,7 @@ func (r *Run) prepareChartsIfNeeded(helmfileCommand string, dir string, concurre
 | 
				
			||||||
	return releaseToChart, nil
 | 
						return releaseToChart, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (r *Run) withPreparedCharts(helmfileCommand string, opts state.ChartPrepareOptions, f func()) error {
 | 
					func (r *Run) withPreparedCharts(helmfileCommand string, opts state.ChartPrepareOptions, f func() []error) error {
 | 
				
			||||||
	if r.ReleaseToChart != nil {
 | 
						if r.ReleaseToChart != nil {
 | 
				
			||||||
		panic("Run.PrepareCharts can be called only once")
 | 
							panic("Run.PrepareCharts can be called only once")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -111,9 +111,13 @@ func (r *Run) withPreparedCharts(helmfileCommand string, opts state.ChartPrepare
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	r.ReleaseToChart = releaseToChart
 | 
						r.ReleaseToChart = releaseToChart
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	f()
 | 
						errs := f()
 | 
				
			||||||
 | 
						var firstErr error = nil
 | 
				
			||||||
 | 
						if len(errs) > 0 {
 | 
				
			||||||
 | 
							firstErr = errs[0]
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	_, err = r.state.TriggerGlobalCleanupEvent(helmfileCommand)
 | 
						_, err = r.state.TriggerGlobalCleanupEvent(helmfileCommand, firstErr)
 | 
				
			||||||
	return err
 | 
						return err
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2400,8 +2400,8 @@ func (st *HelmState) TriggerGlobalPrepareEvent(helmfileCommand string) (bool, er
 | 
				
			||||||
	return st.triggerGlobalReleaseEvent("prepare", nil, helmfileCommand)
 | 
						return st.triggerGlobalReleaseEvent("prepare", nil, helmfileCommand)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (st *HelmState) TriggerGlobalCleanupEvent(helmfileCommand string) (bool, error) {
 | 
					func (st *HelmState) TriggerGlobalCleanupEvent(helmfileCommand string, evtErr error) (bool, error) {
 | 
				
			||||||
	return st.triggerGlobalReleaseEvent("cleanup", nil, helmfileCommand)
 | 
						return st.triggerGlobalReleaseEvent("cleanup", evtErr, helmfileCommand)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (st *HelmState) triggerGlobalReleaseEvent(evt string, evtErr error, helmfileCmd string) (bool, error) {
 | 
					func (st *HelmState) triggerGlobalReleaseEvent(evt string, evtErr error, helmfileCmd string) (bool, error) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue