Skip to content

Commit

Permalink
Merge pull request fluxcd#118 from fluxcd/relative-chart-url-fix
Browse files Browse the repository at this point in the history
Support Helm repository indexes with relative URLs
  • Loading branch information
hiddeco authored Aug 31, 2020
2 parents 3af8670 + f4d047a commit 3c3d381
Showing 1 changed file with 15 additions and 0 deletions.
15 changes: 15 additions & 0 deletions controllers/helmchart_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -180,12 +180,27 @@ func (r *HelmChartReconciler) reconcile(ctx context.Context, repository sourcev1

// TODO(hidde): according to the Helm source the first item is not
// always the correct one to pick, check for updates once in awhile.
// Ref: https://github.com/helm/helm/blob/v3.3.0/pkg/downloader/chart_downloader.go#L241
ref := cv.URLs[0]
u, err := url.Parse(ref)
if err != nil {
err = fmt.Errorf("invalid chart URL format '%s': %w", ref, err)
}

// Prepend the chart repository base URL if the URL is relative
if !u.IsAbs() {
repoURL, err := url.Parse(repository.Spec.URL)
if err != nil {
err = fmt.Errorf("invalid repository URL format '%s': %w", repository.Spec.URL, err)
return sourcev1.HelmChartNotReady(chart, sourcev1.ChartPullFailedReason, err.Error()), err
}
q := repoURL.Query()
// Trailing slash is required for ResolveReference to work
repoURL.Path = strings.TrimSuffix(repoURL.Path, "/") + "/"
u = repoURL.ResolveReference(u)
u.RawQuery = q.Encode()
}

c, err := r.Getters.ByScheme(u.Scheme)
if err != nil {
return sourcev1.HelmChartNotReady(chart, sourcev1.ChartPullFailedReason, err.Error()), err
Expand Down

0 comments on commit 3c3d381

Please sign in to comment.