diff --git a/docs/writing-helmfile.md b/docs/writing-helmfile.md index c8ddaafe..475ace91 100644 --- a/docs/writing-helmfile.md +++ b/docs/writing-helmfile.md @@ -72,6 +72,8 @@ templates: chart: stable/{{`{{ .Release.Name }}`}} namespace: kube-system # This prevents helmfile exiting when it encounters a missing file + # Valid values are "Error", "Warn", "Info", "Debug". The default is "Error" + # Use "Debug" to make missing files errors invisible at the default log level(--log-level=INFO) missingFileHandler: Warn values: - config/{{`{{ .Release.Name }}`}}/values.yaml diff --git a/state/state.go b/state/state.go index c37aff47..59b7bf5e 100644 --- a/state/state.go +++ b/state/state.go @@ -1104,11 +1104,17 @@ func (st *HelmState) namespaceAndValuesFlags(helm helmexec.Interface, release *R path := st.normalizePath(release.ValuesPathPrefix + typedValue) if _, err := os.Stat(path); os.IsNotExist(err) { - if release.MissingFileHandler == nil && *release.MissingFileHandler == "Error" { + if release.MissingFileHandler == nil || *release.MissingFileHandler == "Error" { return nil, err - } else { + } else if *release.MissingFileHandler == "Warn" { st.logger.Warnf("skipping missing values file \"%s\"", path) continue + } else if *release.MissingFileHandler == "Info" { + st.logger.Infof("skipping missing values file \"%s\"", path) + continue + } else { + st.logger.Debugf("skipping missing values file \"%s\"", path) + continue } } @@ -1148,11 +1154,17 @@ func (st *HelmState) namespaceAndValuesFlags(helm helmexec.Interface, release *R for _, value := range release.Secrets { path := st.normalizePath(release.ValuesPathPrefix + value) if _, err := os.Stat(path); os.IsNotExist(err) { - if release.MissingFileHandler == nil && *release.MissingFileHandler == "Error" { + if release.MissingFileHandler == nil || *release.MissingFileHandler == "Error" { return nil, err - } else { + } else if *release.MissingFileHandler == "Warn" { st.logger.Warnf("skipping missing secrets file \"%s\"", path) continue + } else if *release.MissingFileHandler == "Info" { + st.logger.Infof("skipping missing secrets file \"%s\"", path) + continue + } else { + st.logger.Debugf("skipping missing secrets file \"%s\"", path) + continue } }