From 8da139989a68bb6adb12e45a9f7757ac726b99ee Mon Sep 17 00:00:00 2001 From: Tsuzu <8574909+tsuzu@users.noreply.github.com> Date: Fri, 17 Oct 2025 01:42:24 +0900 Subject: [PATCH 1/4] Add pre-release/next sub-command for gorepomd --- cmd/gorepomod/internal/arguments/args.go | 86 +++++++++++----- cmd/gorepomod/internal/git/runner.go | 15 ++- cmd/gorepomod/internal/repo/manager.go | 119 ++++++++++++++++++----- cmd/gorepomod/main.go | 33 ++++++- 4 files changed, 194 insertions(+), 59 deletions(-) diff --git a/cmd/gorepomod/internal/arguments/args.go b/cmd/gorepomod/internal/arguments/args.go index cee8d3a6e3..da5c8957a0 100644 --- a/cmd/gorepomod/internal/arguments/args.go +++ b/cmd/gorepomod/internal/arguments/args.go @@ -13,15 +13,17 @@ import ( ) const ( - doItFlag = "--doIt" - localFlag = "--local" - cmdPin = "pin" - cmdUnPin = "unpin" - cmdTidy = "tidy" - cmdList = "list" - cmdRelease = "release" - cmdUnRelease = "unrelease" - cmdDebug = "debug" + doItFlag = "--doIt" + localFlag = "--local" + cmdPin = "pin" + cmdUnPin = "unpin" + cmdTidy = "tidy" + cmdList = "list" + cmdPreRelease = "pre-release" + cmdRelease = "release" + cmdUnRelease = "unrelease" + cmdDebug = "debug" + cmdNext = "next" ) var ( @@ -53,19 +55,21 @@ const ( UnPin Pin List + PreRelease Release UnRelease Debug + Next ) type Args struct { - cmd Command - moduleName misc.ModuleShortName - conditionalModule misc.ModuleShortName - version semver.SemVer - bump semver.SvBump - doIt bool - localFlag bool + cmd Command + moduleName misc.ModuleShortName + conditionalModules []misc.ModuleShortName + version semver.SemVer + bump semver.SvBump + doIt bool + localFlag bool } func (a *Args) GetCommand() Command { @@ -92,8 +96,8 @@ func (a *Args) ModuleName() misc.ModuleShortName { return a.moduleName } -func (a *Args) ConditionalModule() misc.ModuleShortName { - return a.conditionalModule +func (a *Args) ConditionalModules() []misc.ModuleShortName { + return a.conditionalModules } func (a *Args) Exclusions() (result []string) { @@ -152,7 +156,6 @@ func Parse() (result *Args, err error) { result.localFlag = clArgs.localFlag result.moduleName = misc.ModuleUnknown - result.conditionalModule = misc.ModuleUnknown if !clArgs.more() { return nil, fmt.Errorf("command needs at least one arg") } @@ -178,22 +181,47 @@ func Parse() (result *Args, err error) { } result.moduleName = misc.ModuleShortName(clArgs.next()) if clArgs.more() { - result.conditionalModule = misc.ModuleShortName(clArgs.next()) + result.conditionalModules = []misc.ModuleShortName{misc.ModuleShortName(clArgs.next())} } result.cmd = UnPin case cmdTidy: result.cmd = Tidy case cmdList: result.cmd = List + case cmdPreRelease: + if !clArgs.more() { + return nil, fmt.Errorf("specify version") + } + result.version, err = semver.Parse(clArgs.next()) + if err != nil { + return nil, err + } + result.cmd = PreRelease case cmdRelease: if !clArgs.more() { return nil, fmt.Errorf("specify {module} to release") } result.moduleName = misc.ModuleShortName(clArgs.next()) - bump := "patch" - if clArgs.more() { - bump = clArgs.next() + if !clArgs.more() { + return nil, fmt.Errorf("specify version") + } + result.version, err = semver.Parse(clArgs.next()) + if err != nil { + return nil, err + } + result.cmd = Release + case cmdUnRelease: + if !clArgs.more() { + return nil, fmt.Errorf("specify {module} to unrelease") + } + result.moduleName = misc.ModuleShortName(clArgs.next()) + result.cmd = UnRelease + case cmdNext: + if !clArgs.more() { + return nil, fmt.Errorf("specify one of 'major', 'minor' or 'patch'") } + + bump := clArgs.next() switch bump { case "major": result.bump = semver.Major @@ -205,13 +233,17 @@ func Parse() (result *Args, err error) { return nil, fmt.Errorf( "unknown bump %s; specify one of 'major', 'minor' or 'patch'", bump) } - result.cmd = Release - case cmdUnRelease: + if !clArgs.more() { - return nil, fmt.Errorf("specify {module} to unrelease") + return nil, fmt.Errorf("specify at least one {module} to release") } result.moduleName = misc.ModuleShortName(clArgs.next()) - result.cmd = UnRelease + + for clArgs.more() { + result.conditionalModules = append(result.conditionalModules, misc.ModuleShortName(clArgs.next())) + } + + result.cmd = Next case cmdDebug: if !clArgs.more() { return nil, fmt.Errorf("specify {module} to debug") diff --git a/cmd/gorepomod/internal/git/runner.go b/cmd/gorepomod/internal/git/runner.go index dac244d58e..9102631549 100644 --- a/cmd/gorepomod/internal/git/runner.go +++ b/cmd/gorepomod/internal/git/runner.go @@ -277,8 +277,13 @@ func (gr *Runner) FetchRemote(remote misc.TrackedRepo) error { // MergeFromRemoteMain does a fast forward only merge with main branch. func (gr *Runner) MergeFromRemoteMain(remote misc.TrackedRepo) error { + return gr.MergeFromRemoteBranch(remote, mainBranch) +} + +// MergeFromRemoteMain does a fast forward only merge with the branch. +func (gr *Runner) MergeFromRemoteBranch(remote misc.TrackedRepo, branch string) error { remo := strings.Join( - []string{string(remote), mainBranch}, pathSep) + []string{string(remote), branch}, pathSep) gr.comment("merging from remote") return gr.runNoOut(undoPainful, "merge", "--ff-only", remo) } @@ -388,3 +393,11 @@ func (gr *Runner) GetLatestTag(releaseBranch string) (string, error) { func (gr *Runner) GetMainBranch() string { return string(mainBranch) } + +func (gr *Runner) GetCurrentBranch() (string, error) { + out, err := gr.run(noHarmDone, "branch", "--show-current") + if err != nil { + return "", err + } + return strings.TrimSpace(out), nil +} diff --git a/cmd/gorepomod/internal/repo/manager.go b/cmd/gorepomod/internal/repo/manager.go index 79f9eeba3a..ac779524d6 100644 --- a/cmd/gorepomod/internal/repo/manager.go +++ b/cmd/gorepomod/internal/repo/manager.go @@ -5,6 +5,7 @@ package repo import ( "fmt" + "os" "strconv" "sigs.k8s.io/kustomize/cmd/gorepomod/internal/edit" @@ -113,14 +114,16 @@ func (mgr *Manager) List() error { }) } -func determineBranchAndTag( - m misc.LaModule, v semver.SemVer) (string, string) { +func determineReleaseWorkBranch(v semver.SemVer) string { + return fmt.Sprintf("release-%s", v.BranchLabel()) +} + +func determineTag( + m misc.LaModule, v semver.SemVer) string { if m.ShortName() == misc.ModuleAtTop { - return fmt.Sprintf("release-%s", v.BranchLabel()), v.String() + return v.String() } - return fmt.Sprintf( - "release-%s-%s", m.ShortName(), v.BranchLabel()), - string(m.ShortName()) + "/" + v.String() + return string(m.ShortName()) + "/" + v.String() } func (mgr *Manager) Debug(_ misc.LaModule, doIt bool, localFlag bool) error { @@ -128,12 +131,79 @@ func (mgr *Manager) Debug(_ misc.LaModule, doIt bool, localFlag bool) error { return gr.Debug(mgr.remoteName) } +// DetermineNextVersion calculates the next version to use +// when releasing multiple modules at once. +// It returns the highest version among the targets. +func (mgr *Manager) DetermineNextVersion( + targets []misc.LaModule, bump semver.SvBump) (semver.SemVer, error) { + if len(targets) == 0 { + return semver.Zero(), fmt.Errorf("no targets specified") + } + + latestVer := semver.Zero() + for _, target := range targets { + newVersion := target.VersionLocal().Bump(bump) + + fmt.Fprintf( + os.Stderr, + "Releasing %s, stepping from %s to %s\n", + target.ShortName(), target.VersionLocal(), newVersion) + + if latestVer.LessThan(newVersion) { + latestVer = newVersion + } + } + + return latestVer, nil +} + +// DetermineNextVersion calculates the next version to use +// when releasing multiple modules at once. +// It returns the highest version among the targets. +func (mgr *Manager) PushToReleaseWorkBranch( + version semver.SemVer, doIt bool, localFlag bool) error { + branch := determineReleaseWorkBranch(version) + + fmt.Printf( + "Pushing to release work branch %q for version %s\n", + branch, version) + + gr := git.NewLoud(mgr.AbsPath(), doIt, localFlag) + + if err := gr.AssureCleanWorkspace(); err != nil { + return err + } + if err := gr.FetchRemote(mgr.remoteName); err != nil { + return err + } + if err := gr.CheckoutMainBranch(); err != nil { + return err + } + if err := gr.MergeFromRemoteMain(mgr.remoteName); err != nil { + return err + } + if err := gr.AssureCleanWorkspace(); err != nil { + return err + } + if err := gr.CheckoutReleaseBranch(mgr.remoteName, branch); err != nil { + return err + } + if err := gr.MergeFromRemoteMain(mgr.remoteName); err != nil { + return err + } + if err := gr.PushBranchToRemote(mgr.remoteName, branch); err != nil { + return err + } + + return nil +} + // Release supports a gitlab flow style release process. // // * All development happens in the branch named "master". // * Each minor release gets its own branch. func (mgr *Manager) Release( - target misc.LaModule, bump semver.SvBump, doIt bool, localFlag bool) error { + target misc.LaModule, newVersion semver.SemVer, doIt bool, localFlag bool) error { if reps := target.GetDisallowedReplacements( mgr.allowedReplacements); len(reps) > 0 { return fmt.Errorf( @@ -141,8 +211,6 @@ func (mgr *Manager) Release( target.ShortName(), reps) } - newVersion := target.VersionLocal().Bump(bump) - if newVersion.Equals(target.VersionRemote()) { return fmt.Errorf( "version %s already exists on remote - delete it first", newVersion) @@ -155,7 +223,19 @@ func (mgr *Manager) Release( gr := git.NewLoud(mgr.AbsPath(), doIt, localFlag) - relBranch, relTag := determineBranchAndTag(target, newVersion) + relBranch, err := gr.GetCurrentBranch() + if err != nil { + return err + } + + expectedBranch := determineReleaseWorkBranch(newVersion) + if relBranch != expectedBranch { + return fmt.Errorf( + "current branch is %q, want %q", + relBranch, expectedBranch) + } + + relTag := determineTag(target, newVersion) fmt.Printf( "Releasing %s, stepping from %s to %s\n", @@ -167,22 +247,10 @@ func (mgr *Manager) Release( if err := gr.FetchRemote(mgr.remoteName); err != nil { return err } - if err := gr.CheckoutMainBranch(); err != nil { - return err - } - if err := gr.MergeFromRemoteMain(mgr.remoteName); err != nil { - return err - } - if err := gr.AssureCleanWorkspace(); err != nil { - return err - } if err := gr.CheckoutReleaseBranch(mgr.remoteName, relBranch); err != nil { return err } - if err := gr.MergeFromRemoteMain(mgr.remoteName); err != nil { - return err - } - if err := gr.PushBranchToRemote(mgr.remoteName, relBranch); err != nil { + if err := gr.MergeFromRemoteBranch(mgr.remoteName, relBranch); err != nil { return err } if err := gr.CreateLocalReleaseTag(relTag, relBranch); err != nil { @@ -191,9 +259,6 @@ func (mgr *Manager) Release( if err := gr.PushTagToRemote(mgr.remoteName, relTag); err != nil { return err } - if err := gr.CheckoutMainBranch(); err != nil { - return err - } return nil } @@ -202,7 +267,7 @@ func (mgr *Manager) UnRelease(target misc.LaModule, doIt bool, localFlag bool) e "Unreleasing %s/%s\n", target.ShortName(), target.VersionRemote()) - _, tag := determineBranchAndTag(target, target.VersionRemote()) + tag := determineTag(target, target.VersionRemote()) gr := git.NewLoud(mgr.AbsPath(), doIt, localFlag) diff --git a/cmd/gorepomod/main.go b/cmd/gorepomod/main.go index 9fe091800d..60ac81d48f 100644 --- a/cmd/gorepomod/main.go +++ b/cmd/gorepomod/main.go @@ -62,9 +62,13 @@ func actualMain() error { if err != nil { return err } - conditionalModule, err := findModule(args.ConditionalModule(), mgr) - if err != nil { - return err + conditionalModules := make([]misc.LaModule, 0, len(args.ConditionalModules())) + for _, cm := range args.ConditionalModules() { + m, err := findModule(cm, mgr) + if err != nil { + return err + } + conditionalModules = append(conditionalModules, m) } switch args.GetCommand() { @@ -117,13 +121,23 @@ func actualMain() error { } return nil case arguments.UnPin: + var conditionalModule misc.LaModule + if len(conditionalModules) > 0 { + conditionalModule = conditionalModules[0] + } err = mgr.UnPin(args.DoIt(), targetModule, conditionalModule) if err != nil { return fmt.Errorf("error: %w", err) } return nil + case arguments.PreRelease: + err = mgr.PushToReleaseWorkBranch(args.Version(), args.DoIt(), args.LocalFlag()) + if err != nil { + return fmt.Errorf("error: %w", err) + } + return nil case arguments.Release: - err = mgr.Release(targetModule, args.Bump(), args.DoIt(), args.LocalFlag()) + err = mgr.Release(targetModule, args.Version(), args.DoIt(), args.LocalFlag()) if err != nil { return fmt.Errorf("error: %w", err) } @@ -139,6 +153,17 @@ func actualMain() error { if err != nil { return fmt.Errorf("error: %w", err) } + return nil + case arguments.Next: + nextVersion, err := mgr.DetermineNextVersion(append( + []misc.LaModule{targetModule}, + conditionalModules..., + ), args.Bump()) + if err != nil { + return fmt.Errorf("error: %w", err) + } + fmt.Println(nextVersion) + return nil default: return fmt.Errorf("cannot handle cmd %v", args.GetCommand()) From d82e5b176f33c3ce591e30fcc7b6299ac9026c60 Mon Sep 17 00:00:00 2001 From: Tsuzu <8574909+tsuzu@users.noreply.github.com> Date: Fri, 17 Oct 2025 05:23:30 +0900 Subject: [PATCH 2/4] Update release.yaml to release all modules at once --- .github/workflows/release.yaml | 61 ++++++++++++++++++++++++++-------- 1 file changed, 48 insertions(+), 13 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index d2fb3d6173..5cd3966153 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -1,15 +1,17 @@ name: release -permissions: - contents: write # Allow actions to update dependabot PRs - on: - push: - tags: - - kyaml/v* - - cmd/config/v* - - api/v* - - kustomize/v* + workflow_dispatch: + inputs: + kustomize_tag: + description: 'Tag to release' + required: true + libs_tag: + description: 'Tag to release' + required: true + +permissions: + contents: write # Allow actions to push changes jobs: release: @@ -19,12 +21,45 @@ jobs: uses: actions/checkout@v5 with: fetch-depth: 0 + ref: ${{ github.event.inputs.mize_tag }} - name: Set up Go 1.x uses: actions/setup-go@v6 with: go-version-file: go.work id: go - - run: ./releasing/create-release.sh "${tag}" - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - tag: ${{ github.ref_name }} + - name: Release kyaml + run: | + make IS_LOCAL=true verify-kustomize-repo + go tool gorepomod release kyaml ${{ github.event.inputs.libs_tag }} --doIt + ./releasing/create-release.sh kyaml/${{ github.event.inputs.libs_tag }} + go tool gorepomod pin kyaml --doIt + + - name: Release cmd/config + run: | + make IS_LOCAL=true verify-kustomize-repo + go tool gorepomod release cmd/config ${{ github.event.inputs.libs_tag }} --doIt + ./releasing/create-release.sh cmd/config/${{ github.event.inputs.libs_tag }} + go tool gorepomod pin cmd/config --doIt + + - name: Release api + run: | + make IS_LOCAL=true verify-kustomize-repo + go tool gorepomod release api ${{ github.event.inputs.libs_tag }} --doIt + ./releasing/create-release.sh api/${{ github.event.inputs.libs_tag }} + go tool gorepomod pin api --doIt + + - name: Release kustomize + run: | + make IS_LOCAL=true verify-kustomize-repo + go tool gorepomod release kustomize ${{ github.event.inputs.kustomize_tag }} --doIt + ./releasing/create-release.sh kustomize/${{ github.event.inputs.kustomize_tag }} + + - name: Push changes + run: | + git switch master + git pull origin master + git config --global user.name 'github-actions' + git config --global user.email 'actions@github.com' + sed -i "" "s/LATEST_RELEASE=.*/LATEST_RELEASE=${{ github.event.inputs.kustomize_tag }}/" Makefile + source ./releasing/helpers.sh + createBranch bumpMakefile "Update LATEST_RELEASE to ${{ github.event.inputs.kustomize_tag }}" From 9148a13c6bbe4950a40d6f2053d8658ae298fba2 Mon Sep 17 00:00:00 2001 From: Tsuzu <8574909+tsuzu@users.noreply.github.com> Date: Sat, 15 Nov 2025 19:17:00 +0900 Subject: [PATCH 3/4] Verify major is bumped --- cmd/gorepomod/internal/misc/interfaces.go | 4 ++++ cmd/gorepomod/internal/mod/module.go | 4 ++++ cmd/gorepomod/internal/repo/manager.go | 22 ++++++++++++++++++++++ cmd/gorepomod/internal/semver/semver.go | 4 ++++ 4 files changed, 34 insertions(+) diff --git a/cmd/gorepomod/internal/misc/interfaces.go b/cmd/gorepomod/internal/misc/interfaces.go index 7a9d9dc7dd..61fc63b7ac 100644 --- a/cmd/gorepomod/internal/misc/interfaces.go +++ b/cmd/gorepomod/internal/misc/interfaces.go @@ -32,6 +32,10 @@ type LaModule interface { // ShortName is the module's name without the repo. ShortName() ModuleShortName + // ModulePath is the absolute module path + // which is written at the module directive in go.mod file. + ModulePath() string + // ImportPath is the relative path below the Go src root, // which is the same path as would be used to // import the module. diff --git a/cmd/gorepomod/internal/mod/module.go b/cmd/gorepomod/internal/mod/module.go index 53cf44865d..bf89da3546 100644 --- a/cmd/gorepomod/internal/mod/module.go +++ b/cmd/gorepomod/internal/mod/module.go @@ -53,6 +53,10 @@ func (m *Module) ShortName() misc.ModuleShortName { return m.shortName } +func (m *Module) ModulePath() string { + return m.mf.Module.Mod.Path +} + func (m *Module) ImportPath() string { return filepath.Join(m.repo.RepoPath(), string(m.ShortName())) } diff --git a/cmd/gorepomod/internal/repo/manager.go b/cmd/gorepomod/internal/repo/manager.go index ac779524d6..b96c3c13bc 100644 --- a/cmd/gorepomod/internal/repo/manager.go +++ b/cmd/gorepomod/internal/repo/manager.go @@ -7,6 +7,7 @@ import ( "fmt" "os" "strconv" + "strings" "sigs.k8s.io/kustomize/cmd/gorepomod/internal/edit" "sigs.k8s.io/kustomize/cmd/gorepomod/internal/git" @@ -144,6 +145,10 @@ func (mgr *Manager) DetermineNextVersion( for _, target := range targets { newVersion := target.VersionLocal().Bump(bump) + if err := mgr.verifyMajorVersion(target.ModulePath(), newVersion); err != nil { + return semver.Zero(), err + } + fmt.Fprintf( os.Stderr, "Releasing %s, stepping from %s to %s\n", @@ -157,6 +162,23 @@ func (mgr *Manager) DetermineNextVersion( return latestVer, nil } +func (mgr *Manager) verifyMajorVersion(modulePath string, nextVersion semver.SemVer) error { + nextMajor := nextVersion.Major() + + // For v0 and v1, /vN suffix isn't necessary. + if nextMajor == 0 || nextMajor == 1 { + return nil + } + + suffix := fmt.Sprintf("/v%d", nextMajor) + + if !strings.HasSuffix(modulePath, suffix) { + return fmt.Errorf("module %s should end with %s", modulePath, suffix) + } + + return nil +} + // DetermineNextVersion calculates the next version to use // when releasing multiple modules at once. // It returns the highest version among the targets. diff --git a/cmd/gorepomod/internal/semver/semver.go b/cmd/gorepomod/internal/semver/semver.go index e8d445f401..d3d7158547 100644 --- a/cmd/gorepomod/internal/semver/semver.go +++ b/cmd/gorepomod/internal/semver/semver.go @@ -101,3 +101,7 @@ func (v SemVer) LessThan(o SemVer) bool { func (v SemVer) IsZero() bool { return v.Equals(zero) } + +func (v SemVer) Major() int { + return v.major +} From 1491df34505f2cccad6ca407ca66d54f484f27b0 Mon Sep 17 00:00:00 2001 From: Tsuzu <8574909+tsuzu@users.noreply.github.com> Date: Wed, 26 Nov 2025 23:46:34 +0900 Subject: [PATCH 4/4] Add missing commands to push to remote --- .github/workflows/release.yaml | 20 +++++++++++++++----- cmd/gorepomod/internal/repo/manager.go | 3 --- releasing/helpers.sh | 15 +++++++++++++++ 3 files changed, 30 insertions(+), 8 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 5cd3966153..f9bfd7d610 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -19,20 +19,28 @@ jobs: steps: - name: Check out code into the Go module directory uses: actions/checkout@v5 - with: - fetch-depth: 0 - ref: ${{ github.event.inputs.mize_tag }} + - name: Create a branch for the release + run: | + git config --global user.name 'github-actions' + git config --global user.email 'actions@github.com' + git config --global push.default current + + go tool gorepomod prerelease "${{ github.events.inputs.kustomize_tag }}" + - name: Set up Go 1.x uses: actions/setup-go@v6 with: go-version-file: go.work id: go + - name: Release kyaml run: | make IS_LOCAL=true verify-kustomize-repo go tool gorepomod release kyaml ${{ github.event.inputs.libs_tag }} --doIt ./releasing/create-release.sh kyaml/${{ github.event.inputs.libs_tag }} go tool gorepomod pin kyaml --doIt + git commit -m "Update kyaml to ${{ github.events.inputs.libs_tag }}" + git push --force - name: Release cmd/config run: | @@ -40,6 +48,8 @@ jobs: go tool gorepomod release cmd/config ${{ github.event.inputs.libs_tag }} --doIt ./releasing/create-release.sh cmd/config/${{ github.event.inputs.libs_tag }} go tool gorepomod pin cmd/config --doIt + git commit -m "Update cmd/config to ${{ github.events.inputs.libs_tag }}" + git push --force - name: Release api run: | @@ -47,6 +57,8 @@ jobs: go tool gorepomod release api ${{ github.event.inputs.libs_tag }} --doIt ./releasing/create-release.sh api/${{ github.event.inputs.libs_tag }} go tool gorepomod pin api --doIt + git commit -m "Update api to ${{ github.events.inputs.libs_tag }}" + git push --force - name: Release kustomize run: | @@ -58,8 +70,6 @@ jobs: run: | git switch master git pull origin master - git config --global user.name 'github-actions' - git config --global user.email 'actions@github.com' sed -i "" "s/LATEST_RELEASE=.*/LATEST_RELEASE=${{ github.event.inputs.kustomize_tag }}/" Makefile source ./releasing/helpers.sh createBranch bumpMakefile "Update LATEST_RELEASE to ${{ github.event.inputs.kustomize_tag }}" diff --git a/cmd/gorepomod/internal/repo/manager.go b/cmd/gorepomod/internal/repo/manager.go index b96c3c13bc..e7c5bae228 100644 --- a/cmd/gorepomod/internal/repo/manager.go +++ b/cmd/gorepomod/internal/repo/manager.go @@ -269,9 +269,6 @@ func (mgr *Manager) Release( if err := gr.FetchRemote(mgr.remoteName); err != nil { return err } - if err := gr.CheckoutReleaseBranch(mgr.remoteName, relBranch); err != nil { - return err - } if err := gr.MergeFromRemoteBranch(mgr.remoteName, relBranch); err != nil { return err } diff --git a/releasing/helpers.sh b/releasing/helpers.sh index 4da68f1515..aa05d717ba 100644 --- a/releasing/helpers.sh +++ b/releasing/helpers.sh @@ -33,3 +33,18 @@ function testKustomizeRepo { echo "LGTM" fi } + +function nextVersion() { + local release="$1"; + local libs_release="$2"; + + # Even if the major is bumped for kustomize, libs are bumped for minor. + if [ "$release" = "major"]; then + libs_release="minor"; + fi + + kustomize_version=$(go tool gorepomod next "$release" kustomize) + libs_version=$(go tool gorepomod next "$libs_release" kyaml cmd/config api) + + gh workflow run release.yaml -f kustomize_tag="$kustomize_version" -f libs_version="$libs_version" +} \ No newline at end of file