@@ -50,6 +50,7 @@ type GitHub interface {
50
50
CreateRelease (ctx context.Context , input * github.Release ) error
51
51
GetRelease (ctx context.Context , tag string ) (* github.Release , error )
52
52
CreatePullRequest (owner string , repo string , message string , head string , base string ) (string , error )
53
+ GetRepository () (* github.Repository , error )
53
54
}
54
55
55
56
type Git interface {
@@ -138,6 +139,12 @@ func (r *Releaser) UpdateIndexFile() (bool, error) {
138
139
return false , err
139
140
}
140
141
142
+ // GetRepository to confirm if it's Private
143
+ repository , err := r .github .GetRepository ()
144
+ if err != nil {
145
+ return false , err
146
+ }
147
+
141
148
var update bool
142
149
for _ , chartPackage := range chartPackages {
143
150
ch , err := loader .LoadFile (chartPackage )
@@ -162,8 +169,9 @@ func (r *Releaser) UpdateIndexFile() (bool, error) {
162
169
}
163
170
164
171
for _ , asset := range release .Assets {
165
- downloadURL , _ := url .Parse (asset .URL )
172
+ downloadURL , _ := url .Parse (asset .BrowserDownloadURL )
166
173
name := filepath .Base (downloadURL .Path )
174
+
167
175
// Ignore any other files added in the release by the users.
168
176
if filepath .Ext (name ) != chartAssetFileExtension {
169
177
continue
@@ -173,7 +181,11 @@ func (r *Releaser) UpdateIndexFile() (bool, error) {
173
181
packageName , packageVersion := tagParts [0 ], tagParts [1 ]
174
182
fmt .Printf ("Found %s-%s.tgz\n " , packageName , packageVersion )
175
183
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 {
177
189
return false , err
178
190
}
179
191
update = true
@@ -255,7 +267,7 @@ func (r *Releaser) splitPackageNameAndVersion(pkg string) []string {
255
267
return []string {pkg [0 :delimIndex ], pkg [delimIndex + 1 :]}
256
268
}
257
269
258
- func (r * Releaser ) addToIndexFile (indexFile * repo.IndexFile , url string ) error {
270
+ func (r * Releaser ) addToIndexFile (indexFile * repo.IndexFile , url string , overrideURL string ) error {
259
271
arch := filepath .Join (r .config .PackagePath , filepath .Base (url ))
260
272
261
273
// extract chart metadata
@@ -284,7 +296,18 @@ func (r *Releaser) addToIndexFile(indexFile *repo.IndexFile, url string) error {
284
296
}
285
297
286
298
// 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
288
311
}
289
312
290
313
// CreateReleases finds and uploads Helm chart packages to GitHub
0 commit comments