diff --git a/README.md b/README.md index 6927e983..1f89da77 100644 --- a/README.md +++ b/README.md @@ -1316,16 +1316,18 @@ In order to use OCI chart registries firstly they must be marked in the reposito ```yaml repositories: - name: myOCIRegistry - url: https://myregistry.azurecr.io + url: myregistry.azurecr.io oci: true ``` +It is important not to include a scheme for the URL as helm requires that these are not present for OCI registries + Secondly the credentials for the OCI registry can either be specified within `helmfile.yaml` similar to ```yaml repositories: - name: myOCIRegistry - url: https://myregistry.azurecr.io + url: myregistry.azurecr.io oci: true username: spongebob password: squarepants diff --git a/go.mod b/go.mod index 4cd9a422..ff28ced6 100644 --- a/go.mod +++ b/go.mod @@ -19,7 +19,6 @@ require ( github.com/hashicorp/go-version v1.2.1 github.com/howeyc/gopass v0.0.0-20190910152052-7cb4b85ec19c // indirect github.com/imdario/mergo v0.3.11 - github.com/konsorten/go-windows-terminal-sequences v1.0.2 // indirect github.com/pierrec/lz4 v2.3.0+incompatible // indirect github.com/r3labs/diff v1.1.0 github.com/spf13/cobra v1.1.1 diff --git a/go.sum b/go.sum index 4a31e8df..a6bfe39c 100644 --- a/go.sum +++ b/go.sum @@ -429,8 +429,6 @@ github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvW github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/konsorten/go-windows-terminal-sequences v1.0.2 h1:DB17ag19krx9CFsz4o3enTrPXyIXCl+2iCXH/aMAp9s= -github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= @@ -630,8 +628,6 @@ github.com/variantdev/chartify v0.6.0 h1:QQ00a8Vtuhk6F9jeTZJEXV2g0zRXhYG43xovWZr github.com/variantdev/chartify v0.6.0/go.mod h1:qF4XzQlkfH/6k2jAi1hLas+lK4zSCa8kY+r5JdmLA68= github.com/variantdev/dag v0.0.0-20191028002400-bb0b3c785363 h1:KrfQBEUn+wEOQ/6UIfoqRDvn+Q/wZridQ7t0G1vQqKE= github.com/variantdev/dag v0.0.0-20191028002400-bb0b3c785363/go.mod h1:pH1TQsNSLj2uxMo9NNl9zdGy01Wtn+/2MT96BrKmVyE= -github.com/variantdev/vals v0.11.0 h1:818ztGk5yPTiixbUeE3LkkBGGATEAKtWq09n8q8PFqc= -github.com/variantdev/vals v0.11.0/go.mod h1:pZ0ZJZnOwB5aCJmXZgwrgMMMKMfIYMrhpsHllInRQ8c= github.com/variantdev/vals v0.12.0 h1:1fk2nlSzGkoY5/Ij7dyIB6r0eemFGWQMa5TD2ZhDSB8= github.com/variantdev/vals v0.12.0/go.mod h1:KHSazZ2M3pFiwu6mw4O56YdjNatCZpJZkk4s23rexW8= github.com/vektra/mockery v1.1.2/go.mod h1:VcfZjKaFOPO+MpN4ZvwPjs4c48lkq1o3Ym8yHZJu0jU= diff --git a/pkg/state/state.go b/pkg/state/state.go index 68e80f82..ba472722 100644 --- a/pkg/state/state.go +++ b/pkg/state/state.go @@ -18,7 +18,6 @@ import ( "sync" "text/template" - "github.com/hashicorp/go-getter/helper/url" "github.com/imdario/mergo" "github.com/variantdev/chartify" @@ -2996,22 +2995,14 @@ func (st *HelmState) getOCIChart(release *ReleaseSpec, tempDir string, helm helm return isOCI, release.Chart, nil } - repoUrl, err := url.Parse(repo.URL) - if err != nil { - return isOCI, release.Chart, err - } - if repoUrl.Scheme == "" { - return isOCI, release.Chart, fmt.Errorf("unable to detect scheme - a valid url must be supplied for OCI registry %s", repo.URL) - } - chartVersion := "latest" if release.Version != "" { chartVersion = release.Version } - qualifiedChartName := fmt.Sprintf("%s/%s:%s", repoUrl.Host, name, chartVersion) + qualifiedChartName := fmt.Sprintf("%s/%s:%s", repo.URL, name, chartVersion) - err = helm.ChartPull(qualifiedChartName) + err := helm.ChartPull(qualifiedChartName) if err != nil { return isOCI, release.Chart, err } @@ -3030,12 +3021,14 @@ func (st *HelmState) getOCIChart(release *ReleaseSpec, tempDir string, helm helm pathElems = append(pathElems, release.Name, name, chartVersion) - dir := filepath.Join(pathElems...) - err = helm.ChartExport(qualifiedChartName, dir) + chartPath := path.Join(pathElems...) + err = helm.ChartExport(qualifiedChartName, chartPath) + fullChartPath, err := findChartDirectory(chartPath) if err != nil { return isOCI, release.Chart, err } - return isOCI, filepath.Join(dir, name), nil + chartPath = filepath.Dir(fullChartPath) + return isOCI, chartPath, nil }