mirror of
https://github.com/helmfile/helmfile.git
synced 2026-10-02 21:10:33 +02:00
committed by
Yusuke Kuoka
parent
9019cec4ac
commit
4e5987d833
+31
-1
@@ -1323,7 +1323,31 @@ func (a *App) apply(r *Run, c ApplyConfigProvider) (bool, bool, []error) {
|
||||
}
|
||||
}
|
||||
|
||||
if releasesToBeDeleted == nil && releasesToBeUpdated == nil {
|
||||
var releasesWithPreApply []state.ReleaseSpec
|
||||
for _, r := range toApplyWithNeeds {
|
||||
release := r
|
||||
if len(release.Hooks) > 0 {
|
||||
for _, hook := range release.Hooks {
|
||||
if slices.Contains(hook.Events, "preapply") {
|
||||
releasesWithPreApply = append(releasesWithPreApply, release)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if len(releasesWithPreApply) > 0 {
|
||||
msg := "Releases with preapply hooks: \n"
|
||||
if infoMsg != nil {
|
||||
msg = fmt.Sprintf("%s%s", *infoMsg, msg)
|
||||
}
|
||||
infoMsg = &msg
|
||||
}
|
||||
for _, release := range releasesWithPreApply {
|
||||
tmp := fmt.Sprintf("%s %s (%s)", *infoMsg, release.Name, release.Chart)
|
||||
infoMsg = &tmp
|
||||
}
|
||||
|
||||
if releasesToBeDeleted == nil && releasesToBeUpdated == nil && releasesWithPreApply == nil {
|
||||
if infoMsg != nil {
|
||||
logger := c.Logger()
|
||||
logger.Infof("")
|
||||
@@ -1352,6 +1376,12 @@ Do you really want to apply?
|
||||
if !interactive || interactive && r.askForConfirmation(confMsg) {
|
||||
r.helm.SetExtraArgs(argparser.GetArgs(c.Args(), r.state)...)
|
||||
|
||||
for _, release := range st.Releases {
|
||||
if _, err := st.TriggerPreapplyEvent(&release, "apply"); err != nil {
|
||||
syncErrs = append(syncErrs, err)
|
||||
}
|
||||
}
|
||||
|
||||
// We deleted releases by traversing the DAG in reverse order
|
||||
if len(releasesToBeDeleted) > 0 {
|
||||
_, deletionErrs := withDAG(st, helm, a.Logger, state.PlanOptions{Reverse: true, SelectedReleases: toDelete, SkipNeeds: true}, a.WrapWithoutSelector(func(subst *state.HelmState, helm helmexec.Interface) []error {
|
||||
|
||||
@@ -2251,6 +2251,10 @@ func (st *HelmState) triggerPostsyncEvent(r *ReleaseSpec, evtErr error, helmfile
|
||||
return st.triggerReleaseEvent("postsync", evtErr, r, helmfileCommand)
|
||||
}
|
||||
|
||||
func (st *HelmState) TriggerPreapplyEvent(r *ReleaseSpec, helmfileCommand string) (bool, error) {
|
||||
return st.triggerReleaseEvent("preapply", nil, r, helmfileCommand)
|
||||
}
|
||||
|
||||
func (st *HelmState) triggerReleaseEvent(evt string, evtErr error, r *ReleaseSpec, helmfileCmd string) (bool, error) {
|
||||
bus := &event.Bus{
|
||||
Hooks: r.Hooks,
|
||||
|
||||
Reference in New Issue
Block a user