Skip to content

feat:support --dependency-update before upgrade #774

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions cmd/helm3.go
Original file line number Diff line number Diff line change
@@ -74,6 +74,12 @@ func getRelease(release, namespace string) ([]byte, error) {
return outputWithRichError(cmd)
}

func updateDependencies(chart string) ([]byte, error) {
args := []string{"dependency", "update", chart}
cmd := exec.Command(os.Getenv("HELM_BIN"), args...)
return outputWithRichError(cmd)
}

func getHooks(release, namespace string) ([]byte, error) {
args := []string{"get", "hooks", release}
if namespace != "" {
12 changes: 12 additions & 0 deletions cmd/upgrade.go
Original file line number Diff line number Diff line change
@@ -51,6 +51,7 @@ type diffCmd struct {
resetValues bool
resetThenReuseValues bool
allowUnreleased bool
dependencyUpdate bool
noHooks bool
includeTests bool
includeCRDs bool
@@ -240,6 +241,7 @@ func newChartCommand() *cobra.Command {
f.BoolVar(&diff.resetThenReuseValues, "reset-then-reuse-values", false, "reset the values to the ones built into the chart, apply the last release's values and merge in any new values. If '--reset-values' or '--reuse-values' is specified, this is ignored")
f.BoolVar(&diff.allowUnreleased, "allow-unreleased", false, "enables diffing of releases that are not yet deployed via Helm")
f.BoolVar(&diff.install, "install", false, "enables diffing of releases that are not yet deployed via Helm (equivalent to --allow-unreleased, added to match \"helm upgrade --install\" command")
f.BoolVar(&diff.dependencyUpdate, "dependency-update", false, "update dependencies if they are missing before diffing")
f.BoolVar(&diff.noHooks, "no-hooks", false, "disable diffing of hooks")
f.BoolVar(&diff.includeTests, "include-tests", false, "enable the diffing of the helm test hooks")
f.BoolVar(&diff.includeCRDs, "include-crds", false, "include CRDs in the diffing")
@@ -271,6 +273,16 @@ func (d *diffCmd) runHelm3() error {

var err error

if d.dependencyUpdate {
var output []byte
output, err = updateDependencies(d.chart)
if err != nil {
return err
} else {
fmt.Println(string(output))
}
}

if d.takeOwnership {
// We need to do a three way merge between the manifests of the new
// release, the manifests of the old release and what is currently deployed