Skip to content

Commit

Permalink
fix: fixed up OCI repos so they support paths and URLs that differ fr…
Browse files Browse the repository at this point in the history
…om chart names contained there (#1661)
Chris Mellard authored Jan 28, 2021

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
1 parent 2a71640 commit 8212b63
Showing 4 changed files with 11 additions and 21 deletions.
6 changes: 4 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -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
1 change: 0 additions & 1 deletion go.mod
Original file line number Diff line number Diff line change
@@ -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
4 changes: 0 additions & 4 deletions go.sum
Original file line number Diff line number Diff line change
@@ -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=
21 changes: 7 additions & 14 deletions pkg/state/state.go
Original file line number Diff line number Diff line change
@@ -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
}

0 comments on commit 8212b63

Please sign in to comment.