@@ -50,6 +50,7 @@ type GitHub interface {
5050 CreateRelease (ctx context.Context , input * github.Release ) error
5151 GetRelease (ctx context.Context , tag string ) (* github.Release , error )
5252 CreatePullRequest (owner string , repo string , message string , head string , base string ) (string , error )
53+ GetRepository () (* github.Repository , error )
5354}
5455
5556type Git interface {
@@ -138,6 +139,12 @@ func (r *Releaser) UpdateIndexFile() (bool, error) {
138139 return false , err
139140 }
140141
142+ // GetRepository to confirm if it's Private
143+ repository , err := r .github .GetRepository ()
144+ if err != nil {
145+ return false , err
146+ }
147+
141148 var update bool
142149 for _ , chartPackage := range chartPackages {
143150 ch , err := loader .LoadFile (chartPackage )
@@ -162,8 +169,9 @@ func (r *Releaser) UpdateIndexFile() (bool, error) {
162169 }
163170
164171 for _ , asset := range release .Assets {
165- downloadURL , _ := url .Parse (asset .URL )
172+ downloadURL , _ := url .Parse (asset .BrowserDownloadURL )
166173 name := filepath .Base (downloadURL .Path )
174+
167175 // Ignore any other files added in the release by the users.
168176 if filepath .Ext (name ) != chartAssetFileExtension {
169177 continue
@@ -173,7 +181,11 @@ func (r *Releaser) UpdateIndexFile() (bool, error) {
173181 packageName , packageVersion := tagParts [0 ], tagParts [1 ]
174182 fmt .Printf ("Found %s-%s.tgz\n " , packageName , packageVersion )
175183 if _ , err := indexFile .Get (packageName , packageVersion ); err != nil {
176- if err := r .addToIndexFile (indexFile , downloadURL .String ()); err != nil {
184+ overrideURL := ""
185+ if * repository .Private {
186+ overrideURL = asset .URL
187+ }
188+ if err := r .addToIndexFile (indexFile , downloadURL .String (), overrideURL ); err != nil {
177189 return false , err
178190 }
179191 update = true
@@ -255,7 +267,7 @@ func (r *Releaser) splitPackageNameAndVersion(pkg string) []string {
255267 return []string {pkg [0 :delimIndex ], pkg [delimIndex + 1 :]}
256268}
257269
258- func (r * Releaser ) addToIndexFile (indexFile * repo.IndexFile , url string ) error {
270+ func (r * Releaser ) addToIndexFile (indexFile * repo.IndexFile , url string , overrideURL string ) error {
259271 arch := filepath .Join (r .config .PackagePath , filepath .Base (url ))
260272
261273 // extract chart metadata
@@ -284,7 +296,18 @@ func (r *Releaser) addToIndexFile(indexFile *repo.IndexFile, url string) error {
284296 }
285297
286298 // Add to index
287- return indexFile .MustAdd (c .Metadata , filepath .Base (arch ), strings .Join (s , "/" ), hash )
299+ addToIndex := indexFile .MustAdd (c .Metadata , filepath .Base (arch ), strings .Join (s , "/" ), hash )
300+
301+ // replace the URL for Private GitHub repos
302+ if overrideURL != "" {
303+ for _ , entry := range indexFile .Entries [c .Metadata .Name ] {
304+ if entry .Digest == hash {
305+ entry .URLs = []string {overrideURL }
306+ }
307+ }
308+ }
309+
310+ return addToIndex
288311}
289312
290313// CreateReleases finds and uploads Helm chart packages to GitHub
0 commit comments