@@ -335,12 +335,24 @@ func (b *Bump) BumpChart(ctx context.Context, versionOverride string, multiRCs b
335
335
return err
336
336
}
337
337
338
- // TODO: Create option to skip removal of -RC (rancher-webhook for example)
339
- if strings .Contains (b .versions .latest .txt , "-rc" ) {
340
- logger .Log (ctx , slog .LevelInfo , "removing last -RC version" , slog .String ("latestVersion" , b .versions .latest .txt ))
341
- if err := b .makeRemove (targetCharts , git ); err != nil {
342
- logger .Log (ctx , slog .LevelError , "error while removing -RC version" , logger .Err (err ))
343
- return err
338
+ if ! multiRCs {
339
+ if strings .Contains (b .versions .toRelease .txt , "-rc" ) {
340
+
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
+ }
344
356
}
345
357
}
346
358
@@ -480,11 +492,9 @@ func chartsTargets(targetChart string) ([]string, error) {
480
492
return nil , fmt .Errorf ("chart %s not listed" , targetChart )
481
493
}
482
494
483
- func (b * Bump ) makeRemove (targetCharts []string , g * git.Git ) error {
484
- version := b .versions .latestRepoPrefix .txt + "+up" + b .versions .latest .txt
485
-
495
+ func makeRemove (targetVersion string , targetCharts []string , g * git.Git ) error {
486
496
for _ , chart := range targetCharts {
487
- 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 ))
488
498
cmd .Stdout = os .Stdout
489
499
cmd .Stderr = os .Stderr
490
500
if err := cmd .Run (); err != nil {
@@ -536,3 +546,20 @@ func checkBumpAppVersion(ctx context.Context, bumpAppVersion *string, versions [
536
546
537
547
return false , nil
538
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