Support helm-secrets v4.0.0 (#360)

Support helm-secret v4.0.0

Signed-off-by: KqLLL <lllkq546449541@gmail.com>
This commit is contained in:
KqLLL
2022-09-17 19:54:28 +09:00
committed by GitHub
parent 3ff98c02a1
commit 0fbcb07bad
6 changed files with 118 additions and 5 deletions
+28 -1
View File
@@ -14,6 +14,8 @@ import (
"github.com/Masterminds/semver/v3"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
"helm.sh/helm/v3/pkg/cli"
"helm.sh/helm/v3/pkg/plugin"
"github.com/helmfile/helmfile/pkg/envvar"
)
@@ -84,6 +86,20 @@ func getHelmVersion(helmBinary string, runner Runner) (semver.Version, error) {
return parseHelmVersion(string(outBytes))
}
func GetPluginVersion(name, pluginsDir string) (*semver.Version, error) {
plugins, err := plugin.FindPlugins(pluginsDir)
if err != nil {
return nil, err
}
for _, plugin := range plugins {
if plugin.Metadata.Name == name {
return semver.NewVersion(plugin.Metadata.Version)
}
}
return nil, fmt.Errorf("plugin %s not installed", name)
}
func redactedURL(chart string) string {
chartURL, err := url.ParseRequestURI(chart)
if err != nil {
@@ -281,7 +297,18 @@ func (helm *execer) DecryptSecret(context HelmContext, name string, flags ...str
helm.logger.Infof("Decrypting secret %v", absPath)
preArgs := context.GetTillerlessArgs(helm)
env := context.getTillerlessEnv()
secretBytes, err := helm.exec(append(append(preArgs, "secrets", "view", absPath), flags...), env)
settings := cli.New()
pluginVersion, err := GetPluginVersion("secrets", settings.PluginsDirectory)
if err != nil {
secret.err = err
return "", err
}
secretArg := "view"
// helm secret view command. The helm secret decrypt command is a drop-in replacement in 4.0.0 version
if pluginVersion.Major() > 3 {
secretArg = "decrypt"
}
secretBytes, err := helm.exec(append(append(preArgs, "secrets", secretArg, absPath), flags...), env)
if err != nil {
secret.err = err
return "", err