From a4619309d8188d5b2fd210d83625d4832a8dc373 Mon Sep 17 00:00:00 2001 From: nicholasSUSE Date: Wed, 9 Apr 2025 12:14:41 -0300 Subject: [PATCH 1/2] adding chart version override feature across dependent functions --- main.go | 4 ++-- pkg/auto/chart_bump.go | 4 ++-- pkg/auto/chart_bump_versions.go | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/main.go b/main.go index 833c1e17..b48457ae 100644 --- a/main.go +++ b/main.go @@ -441,7 +441,7 @@ func main() { `, Action: chartBump, Before: setupCache, - Flags: []cli.Flag{packageFlag, branchFlag}, + Flags: []cli.Flag{packageFlag, branchFlag, chartVersionFlag}, }, } @@ -986,7 +986,7 @@ func chartBump(c *cli.Context) { } logger.Log(ctx, slog.LevelInfo, "start auto-chart-bump") - if err := bump.BumpChart(ctx); err != nil { + if err := bump.BumpChart(ctx, ChartVersion); err != nil { logger.Fatal(ctx, fmt.Errorf("failed to bump: %w", err).Error()) } } diff --git a/pkg/auto/chart_bump.go b/pkg/auto/chart_bump.go index da150db3..2bf7c470 100644 --- a/pkg/auto/chart_bump.go +++ b/pkg/auto/chart_bump.go @@ -218,7 +218,7 @@ func checkUpstreamOptions(options *options.UpstreamOptions) error { // BumpChart will execute a similar approach as the defined development workflow for chartowners. // The main difference is that between the steps: (make prepare and make patch) we will calculate the next version to release. -func (b *Bump) BumpChart(ctx context.Context) error { +func (b *Bump) BumpChart(ctx context.Context, versionOverride string) error { // List the possible target charts targetCharts, err := chartsTargets(b.targetChart) if err != nil { @@ -272,7 +272,7 @@ func (b *Bump) BumpChart(ctx context.Context) error { } // Calculate the next version to release - if err := b.calculateNextVersion(ctx); err != nil { + if err := b.calculateNextVersion(ctx, versionOverride); err != nil { return err } diff --git a/pkg/auto/chart_bump_versions.go b/pkg/auto/chart_bump_versions.go index b057ab56..a7c920d1 100644 --- a/pkg/auto/chart_bump_versions.go +++ b/pkg/auto/chart_bump_versions.go @@ -38,7 +38,7 @@ func (v *version) updateTxt() { // if the chart had a patch bump, it will increment the patch version for the repoPrefixVersion // if the chart had a minor or major bump, it will increment the minor version for the repoPrefixVersion // the major repoPrefixVersion is only bumped when Rancher version is bumped. -func (b *Bump) calculateNextVersion(ctx context.Context) error { +func (b *Bump) calculateNextVersion(ctx context.Context, versionOverride string) error { logger.Log(ctx, slog.LevelInfo, "calculate next version") // load versions and parse the repository prefix versions from them From 5da43d08dc13e52a8119fce5cd4f1dc9fdd48632 Mon Sep 17 00:00:00 2001 From: nicholasSUSE Date: Wed, 9 Apr 2025 12:15:03 -0300 Subject: [PATCH 2/2] overriding current next version calculation when there is a version override --- pkg/auto/chart_bump_versions.go | 28 +++++++++++++++++++--------- pkg/auto/chart_bump_versions_test.go | 2 +- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/pkg/auto/chart_bump_versions.go b/pkg/auto/chart_bump_versions.go index a7c920d1..8fad4e71 100644 --- a/pkg/auto/chart_bump_versions.go +++ b/pkg/auto/chart_bump_versions.go @@ -46,16 +46,26 @@ func (b *Bump) calculateNextVersion(ctx context.Context, versionOverride string) return err } - // check and parse the versions before building the new version - if err := b.applyVersionRules(); err != nil { - return err - } + if versionOverride == "" { + // check and parse the versions before building the new version + if err := b.applyVersionRules(); err != nil { + return err + } - // build: toRelease full version - targetVersion := b.versions.toReleaseRepoPrefix.txt + "+up" + b.versions.toRelease.txt - targetSemver := semver.MustParse(targetVersion) - b.releaseYaml.ChartVersion = targetVersion - b.Pkg.AutoGeneratedBumpVersion = &targetSemver + // build: toRelease full version + targetVersion := b.versions.toReleaseRepoPrefix.txt + "+up" + b.versions.toRelease.txt + targetSemver := semver.MustParse(targetVersion) + b.releaseYaml.ChartVersion = targetVersion + b.Pkg.AutoGeneratedBumpVersion = &targetSemver + } else { + semverOverride, err := semver.Make(versionOverride) + if err != nil { + logger.Log(ctx, slog.LevelError, "invalid version override", slog.String("version", versionOverride), logger.Err(err)) + return err + } + b.releaseYaml.ChartVersion = versionOverride + b.Pkg.AutoGeneratedBumpVersion = &semverOverride + } logger.Log(ctx, slog.LevelDebug, "", slog.String("latestVersion", b.versions.latest.txt)) logger.Log(ctx, slog.LevelDebug, "", slog.String("latestRepoVersion", b.versions.latestRepoPrefix.txt)) diff --git a/pkg/auto/chart_bump_versions_test.go b/pkg/auto/chart_bump_versions_test.go index ffb8a0b5..281e9f41 100644 --- a/pkg/auto/chart_bump_versions_test.go +++ b/pkg/auto/chart_bump_versions_test.go @@ -320,7 +320,7 @@ func Test_calculateNextVersion(t *testing.T) { for _, tc := range tests { t.Run(tc.name, func(t *testing.T) { - err := tc.input.b.calculateNextVersion(context.Background()) + err := tc.input.b.calculateNextVersion(context.Background(), "") assertError(t, err, tc.expected.err) if tc.expected.err == nil { assert.Equal(t, tc.expected.b.releaseYaml.ChartVersion, tc.input.b.releaseYaml.ChartVersion)