mirror of
https://github.com/helmfile/helmfile.git
synced 2026-10-04 22:12:31 +02:00
Add pre/postuninstall hooks (#1375)
Exmple:
```
releases:
- name: test2
chart: stable/mysql
installed: false
hooks:
- events:
- prepare
- preuninstall
- postuninstall
- cleanup
showlogs: true
command: "echo"
args:
- "event name = {{` {{ .Event.Name `}} }}"
```
Output:
```
helmfile apply
Listing releases matching ^test2$
test2 default 1 2020-07-23 00:51:44.975478 +0900 JST deployed mysql-1.6.6 5.7.30
helmfile.yaml: basePath=.
hook[preuninstall] logs | event name = preuninstall
hook[preuninstall] logs |
Deleting test2
release "test2" uninstalled
helmfile.yaml: basePath=.
hook[postuninstall] logs | event name = postuninstall
hook[postuninstall] logs |
helmfile.yaml: basePath=.
hook[cleanup] logs | event name = cleanup
hook[cleanup] logs |
DELETED RELEASES:
NAME
test2
```
Resolves #802
This commit is contained in:
+30
-8
@@ -6,7 +6,6 @@ import (
|
||||
"encoding/hex"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/variantdev/chartify"
|
||||
"io"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
@@ -19,6 +18,8 @@ import (
|
||||
"sync"
|
||||
"text/template"
|
||||
|
||||
"github.com/variantdev/chartify"
|
||||
|
||||
"github.com/roboll/helmfile/pkg/environment"
|
||||
"github.com/roboll/helmfile/pkg/event"
|
||||
"github.com/roboll/helmfile/pkg/helmexec"
|
||||
@@ -547,8 +548,13 @@ func (st *HelmState) DeleteReleasesForSync(affectedReleases *AffectedReleases, h
|
||||
}
|
||||
deletionFlags := st.appendConnectionFlags(args, release)
|
||||
m.Lock()
|
||||
|
||||
if err := helm.DeleteRelease(context, release.Name, deletionFlags...); err != nil {
|
||||
if _, err := st.triggerReleaseEvent("preuninstall", nil, release, "sync"); err != nil {
|
||||
affectedReleases.Failed = append(affectedReleases.Failed, release)
|
||||
relErr = newReleaseFailedError(release, err)
|
||||
} else if err := helm.DeleteRelease(context, release.Name, deletionFlags...); err != nil {
|
||||
affectedReleases.Failed = append(affectedReleases.Failed, release)
|
||||
relErr = newReleaseFailedError(release, err)
|
||||
} else if _, err := st.triggerReleaseEvent("postuninstall", nil, release, "sync"); err != nil {
|
||||
affectedReleases.Failed = append(affectedReleases.Failed, release)
|
||||
relErr = newReleaseFailedError(release, err)
|
||||
} else {
|
||||
@@ -652,8 +658,13 @@ func (st *HelmState) SyncReleases(affectedReleases *AffectedReleases, helm helme
|
||||
}
|
||||
deletionFlags := st.appendConnectionFlags(args, release)
|
||||
m.Lock()
|
||||
|
||||
if err := helm.DeleteRelease(context, release.Name, deletionFlags...); err != nil {
|
||||
if _, err := st.triggerReleaseEvent("preuninstall", nil, release, "sync"); err != nil {
|
||||
affectedReleases.Failed = append(affectedReleases.Failed, release)
|
||||
relErr = newReleaseFailedError(release, err)
|
||||
} else if err := helm.DeleteRelease(context, release.Name, deletionFlags...); err != nil {
|
||||
affectedReleases.Failed = append(affectedReleases.Failed, release)
|
||||
relErr = newReleaseFailedError(release, err)
|
||||
} else if _, err := st.triggerReleaseEvent("postuninstall", nil, release, "sync"); err != nil {
|
||||
affectedReleases.Failed = append(affectedReleases.Failed, release)
|
||||
relErr = newReleaseFailedError(release, err)
|
||||
} else {
|
||||
@@ -1309,13 +1320,24 @@ func (st *HelmState) DeleteReleases(affectedReleases *AffectedReleases, helm hel
|
||||
}
|
||||
context := st.createHelmContext(&release, workerIndex)
|
||||
|
||||
if _, err := st.triggerReleaseEvent("preuninstall", nil, &release, "delete"); err != nil {
|
||||
affectedReleases.Failed = append(affectedReleases.Failed, &release)
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
if err := helm.DeleteRelease(context, release.Name, flags...); err != nil {
|
||||
affectedReleases.Failed = append(affectedReleases.Failed, &release)
|
||||
return err
|
||||
} else {
|
||||
affectedReleases.Deleted = append(affectedReleases.Deleted, &release)
|
||||
return nil
|
||||
}
|
||||
|
||||
if _, err := st.triggerReleaseEvent("postuninstall", nil, &release, "delete"); err != nil {
|
||||
affectedReleases.Failed = append(affectedReleases.Failed, &release)
|
||||
return err
|
||||
}
|
||||
|
||||
affectedReleases.Deleted = append(affectedReleases.Deleted, &release)
|
||||
return nil
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user