Skip to content

Commit c1ccd20

Browse files
committed
multiRC support implementation, check only RC versions for the target toRelease version, everything else stays untouched
1 parent 7099294 commit c1ccd20

File tree

1 file changed

+37
-10
lines changed

1 file changed

+37
-10
lines changed

pkg/auto/chart_bump.go

Lines changed: 37 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -335,12 +335,24 @@ func (b *Bump) BumpChart(ctx context.Context, versionOverride string, multiRCs b
335335
return err
336336
}
337337

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+
}
344356
}
345357
}
346358

@@ -480,11 +492,9 @@ func chartsTargets(targetChart string) ([]string, error) {
480492
return nil, fmt.Errorf("chart %s not listed", targetChart)
481493
}
482494

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 {
486496
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))
488498
cmd.Stdout = os.Stdout
489499
cmd.Stderr = os.Stderr
490500
if err := cmd.Run(); err != nil {
@@ -536,3 +546,20 @@ func checkBumpAppVersion(ctx context.Context, bumpAppVersion *string, versions [
536546

537547
return false, nil
538548
}
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

Comments
 (0)