Support Helm 3.7.0's reworked OCI support (#1970)

Signed-off-by: Aditya Menon <aditya.menon@spin.pm>
This commit is contained in:
Aditya Menon
2021-10-04 09:19:15 +09:00
committed by GitHub
parent 787e6c80d1
commit 9a0ce53608
8 changed files with 41 additions and 12 deletions
+28 -2
View File
@@ -432,14 +432,40 @@ func (helm *execer) Fetch(chart string, flags ...string) error {
func (helm *execer) ChartPull(chart string, flags ...string) error {
helm.logger.Infof("Pulling %v", chart)
out, err := helm.exec(append([]string{"chart", "pull", chart}, flags...), map[string]string{"HELM_EXPERIMENTAL_OCI": "1"})
helm.logger.Infof("Exporting %v", chart)
helmVersionConstraint, _ := semver.NewConstraint(">= 3.7.0")
var helmArgs []string
if helmVersionConstraint.Check(&helm.version) {
ociChartURLSplit := strings.Split(chart, ":")
ociChartURL := fmt.Sprintf("oci://%s", ociChartURLSplit[0])
ociChartTag := ociChartURLSplit[1]
tempDir, err := ioutil.TempDir("", "chart*")
if err != nil {
return err
}
defer os.RemoveAll(tempDir)
helmArgs = []string{"fetch", ociChartURL, "--version", ociChartTag, "--destination", tempDir}
} else {
helmArgs = []string{"chart", "pull", chart}
}
out, err := helm.exec(append(helmArgs, flags...), map[string]string{"HELM_EXPERIMENTAL_OCI": "1"})
helm.info(out)
return err
}
func (helm *execer) ChartExport(chart string, path string, flags ...string) error {
helm.logger.Infof("Exporting %v", chart)
out, err := helm.exec(append([]string{"chart", "export", chart, "--destination", path}, flags...), map[string]string{"HELM_EXPERIMENTAL_OCI": "1"})
helmVersionConstraint, _ := semver.NewConstraint(">= 3.7.0")
var helmArgs []string
if helmVersionConstraint.Check(&helm.version) {
ociChartURLSplit := strings.Split(chart, ":")
ociChartURL := fmt.Sprintf("oci://%s", ociChartURLSplit[0])
ociChartTag := ociChartURLSplit[1]
helmArgs = []string{"pull", ociChartURL, "--version", ociChartTag, "--untar"}
} else {
helmArgs = []string{"chart", "export", chart}
}
out, err := helm.exec(append(append(helmArgs, "--destination", path), flags...), map[string]string{"HELM_EXPERIMENTAL_OCI": "1"})
helm.info(out)
return err
}