Skip to content

Commit

Permalink
Set --skip-diff-on-install on helmfile-apply for faster and more re…
Browse files Browse the repository at this point in the history
…liable install

To make `terraform apply` work faster and more reliably when there are many big new releases to be installed, `--skip-diff-on-install` is automatically added to every helmfile-apply call when helmfile is v0.136.0 or greater.

See roboll/helmfile#1618 for more information.
  • Loading branch information
mumoshu committed Jan 1, 2021
1 parent 389eee7 commit 4e0c25b
Showing 1 changed file with 38 additions and 2 deletions.
40 changes: 38 additions & 2 deletions pkg/helmfile/release_set.go
Original file line number Diff line number Diff line change
Expand Up @@ -279,6 +279,13 @@ func CreateReleaseSet(fs *ReleaseSet, d ResourceReadWrite) error {
"--suppress-secrets",
}

additionalArgs, err := getAdditionalHelmfileApplyFlags(fs)
if err != nil {
return err
}

args = append(args, additionalArgs...)

for k, v := range fs.ReleasesValues {
args = append(args, "--set", fmt.Sprintf("%s=%s", k, v))
}
Expand Down Expand Up @@ -489,20 +496,42 @@ func runDiff(fs *ReleaseSet, conf DiffConfig) (*State, error) {
return diff, nil
}

func getAdditionalHelmfileApplyFlags(fs *ReleaseSet) ([]string, error) {
helmfileVersion, err := getHelmfileVersion(fs)
if err != nil {
return nil, fmt.Errorf("getting helmfile version: %w", err)
}

// See https://github.com/roboll/helmfile/pull/1618 for --skip-diff-on-install

gt136, err := semver.NewConstraint(">= 0.136.0")
if err != nil {
return nil, err
}

var args []string

if helmfileVersion != nil && gt136.Check(helmfileVersion) {
args = append(args, "--skip-diff-on-install")
}

return args, nil
}

func getDiffFile(fs *ReleaseSet) (string, error) {
helmfileVersion, err := getHelmfileVersion(fs)
if err != nil {
return "", fmt.Errorf("getting helmfile version: %w", err)
}

cons, err := semver.NewConstraint(">= 0.126.0")
gte126, err := semver.NewConstraint(">= 0.126.0")
if err != nil {
return "", err
}

var determinisiticOutput string

if helmfileVersion != nil && cons.Check(helmfileVersion) {
if helmfileVersion != nil && gte126.Check(helmfileVersion) {
logf("Detected Helmfile version greater than 0.126.0(=%s). Using `helmfile build --embed-values` to compute the unique ID of the desired state.", helmfileVersion)
build, err := runBuild(fs, "--embed-values")
if err != nil {
Expand Down Expand Up @@ -792,6 +821,13 @@ func UpdateReleaseSet(fs *ReleaseSet, d ResourceReadWrite) error {
"--suppress-secrets",
}

additionalArgs, err := getAdditionalHelmfileApplyFlags(fs)
if err != nil {
return err
}

args = append(args, additionalArgs...)

for k, v := range fs.ReleasesValues {
args = append(args, "--set", fmt.Sprintf("%s=%s", k, v))
}
Expand Down

0 comments on commit 4e0c25b

Please sign in to comment.