@@ -218,7 +218,7 @@ func checkUpstreamOptions(options *options.UpstreamOptions) error {
218
218
219
219
// BumpChart will execute a similar approach as the defined development workflow for chartowners.
220
220
// The main difference is that between the steps: (make prepare and make patch) we will calculate the next version to release.
221
- func (b * Bump ) BumpChart (ctx context.Context , versionOverride string ) error {
221
+ func (b * Bump ) BumpChart (ctx context.Context , versionOverride string , multiRCs bool ) error {
222
222
// List the possible target charts
223
223
targetCharts , err := chartsTargets (b .targetChart )
224
224
if err != nil {
@@ -335,14 +335,24 @@ func (b *Bump) BumpChart(ctx context.Context, versionOverride string) error {
335
335
return err
336
336
}
337
337
338
- bumpVersion := b .Pkg .AutoGeneratedBumpVersion .String ()
338
+ if ! multiRCs {
339
+ if strings .Contains (b .versions .toRelease .txt , "-rc" ) {
339
340
340
- // TODO: Create option to skip removal of -RC (rancher-webhook for example)
341
- if strings .Contains (b .versions .latest .txt , "-rc" ) {
342
- logger .Log (ctx , slog .LevelInfo , "removing last -RC version" , slog .String ("latestVersion" , b .versions .latest .txt ))
343
- if err := b .makeRemove (targetCharts , git ); err != nil {
344
- logger .Log (ctx , slog .LevelError , "error while removing -RC version" , logger .Err (err ))
345
- return err
341
+ listRCVersions , err := listRCVersions (b .versions .toRelease .txt , b .assetsVersionsMap [b .targetChart ])
342
+ if err != nil {
343
+ logger .Log (ctx , slog .LevelError , "error while listing RC versions" , logger .Err (err ))
344
+ return err
345
+ }
346
+
347
+ if len (listRCVersions ) > 0 {
348
+ for _ , rcVersion := range listRCVersions {
349
+ logger .Log (ctx , slog .LevelInfo , "removing RC version" , slog .String ("rcVersion" , rcVersion ))
350
+ if err := makeRemove (rcVersion , targetCharts , git ); err != nil {
351
+ logger .Log (ctx , slog .LevelError , "error while removing -RC version" , logger .Err (err ))
352
+ return err
353
+ }
354
+ }
355
+ }
346
356
}
347
357
}
348
358
@@ -371,6 +381,7 @@ func (b *Bump) BumpChart(ctx context.Context, versionOverride string) error {
371
381
return err
372
382
}
373
383
384
+ bumpVersion := b .Pkg .AutoGeneratedBumpVersion .String ()
374
385
logger .Log (ctx , slog .LevelInfo , "bump version" , slog .String ("bumpVersion" , bumpVersion ))
375
386
return writeBumpJSON (targetCharts , bumpVersion )
376
387
}
@@ -481,11 +492,9 @@ func chartsTargets(targetChart string) ([]string, error) {
481
492
return nil , fmt .Errorf ("chart %s not listed" , targetChart )
482
493
}
483
494
484
- func (b * Bump ) makeRemove (targetCharts []string , g * git.Git ) error {
485
- version := b .versions .latestRepoPrefix .txt + "+up" + b .versions .latest .txt
486
-
495
+ func makeRemove (targetVersion string , targetCharts []string , g * git.Git ) error {
487
496
for _ , chart := range targetCharts {
488
- cmd := exec .Command ("make" , "remove" , fmt .Sprintf ("CHART=%s" , chart ), fmt .Sprintf ("VERSION=%s" , version ))
497
+ cmd := exec .Command ("make" , "remove" , fmt .Sprintf ("CHART=%s" , chart ), fmt .Sprintf ("VERSION=%s" , targetVersion ))
489
498
cmd .Stdout = os .Stdout
490
499
cmd .Stderr = os .Stderr
491
500
if err := cmd .Run (); err != nil {
@@ -537,3 +546,20 @@ func checkBumpAppVersion(ctx context.Context, bumpAppVersion *string, versions [
537
546
538
547
return false , nil
539
548
}
549
+
550
+ func listRCVersions (rcVersion string , assets []lifecycle.Asset ) ([]string , error ) {
551
+ idx := strings .Index (rcVersion , "-rc" )
552
+ if idx == - 1 {
553
+ return nil , fmt .Errorf ("invalid rcVersion format: %s" , rcVersion )
554
+ }
555
+ rcVersionCheckStr := rcVersion [:idx + len ("-rc" )]
556
+
557
+ var rcVersions []string
558
+ for _ , asset := range assets {
559
+ if strings .Contains (asset .Version , rcVersionCheckStr ) {
560
+ rcVersions = append (rcVersions , asset .Version )
561
+ }
562
+ }
563
+
564
+ return rcVersions , nil
565
+ }
0 commit comments