Skip to content

Commit 5ea0fa8

Browse files
committed
release: use cockroachdb/version instead of semver
Previously, the `pkg/cmd/release` package used the `github.com/Masterminds/semver` library to parse and manipulate semantic version strings. This commit replaces that library with `github.com/cockroachdb/version`, which is better suited for our needs. Additionally, the `orchestration.go` and `set_cockroach_version.go` files have been removed as they were unused. Release note: none Epic: none
1 parent 53814aa commit 5ea0fa8

File tree

14 files changed

+100
-199
lines changed

14 files changed

+100
-199
lines changed

DEPS.bzl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1965,10 +1965,10 @@ def go_deps():
19651965
name = "com_github_cockroachdb_version",
19661966
build_file_proto_mode = "disable_global",
19671967
importpath = "github.com/cockroachdb/version",
1968-
sha256 = "4e734ab8c4e4ff81003fedffa30dc5727f9b210c72a188ee3127eeedea09f644",
1969-
strip_prefix = "github.com/cockroachdb/[email protected]20250314144055-3860cd14adf2",
1968+
sha256 = "05edbf709b51a4a95b8cbcc932ca725c5137d235dce9cb0d59027662257e7ac5",
1969+
strip_prefix = "github.com/cockroachdb/[email protected]20250509181251-54dac3003410",
19701970
urls = [
1971-
"https://storage.googleapis.com/cockroach-godeps/gomod/github.com/cockroachdb/version/com_github_cockroachdb_version-v0.0.0-20250314144055-3860cd14adf2.zip",
1971+
"https://storage.googleapis.com/cockroach-godeps/gomod/github.com/cockroachdb/version/com_github_cockroachdb_version-v0.0.0-20250509181251-54dac3003410.zip",
19721972
],
19731973
)
19741974
go_repository(

build/bazelutil/distdir_files.bzl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -376,7 +376,7 @@ DISTDIR_FILES = {
376376
"https://storage.googleapis.com/cockroach-godeps/gomod/github.com/cockroachdb/tokenbucket/com_github_cockroachdb_tokenbucket-v0.0.0-20250429170803-42689b6311bb.zip": "2802e556b469d0989364cf8244bd4992e34e34a72a8c514df9dd787c694c3efd",
377377
"https://storage.googleapis.com/cockroach-godeps/gomod/github.com/cockroachdb/tools/com_github_cockroachdb_tools-v0.0.0-20211112185054-642e51449b40.zip": "37a3737dd23768b4997b2f0341d625658f5862cdbf808f7fbf3a7f9fd25913a7",
378378
"https://storage.googleapis.com/cockroach-godeps/gomod/github.com/cockroachdb/ttycolor/com_github_cockroachdb_ttycolor-v0.0.0-20210902133924-c7d7dcdde4e8.zip": "1260533510c89abd6d8af573a40f0246f6865d5091144dea509b2c48e7c61614",
379-
"https://storage.googleapis.com/cockroach-godeps/gomod/github.com/cockroachdb/version/com_github_cockroachdb_version-v0.0.0-20250314144055-3860cd14adf2.zip": "4e734ab8c4e4ff81003fedffa30dc5727f9b210c72a188ee3127eeedea09f644",
379+
"https://storage.googleapis.com/cockroach-godeps/gomod/github.com/cockroachdb/version/com_github_cockroachdb_version-v0.0.0-20250509181251-54dac3003410.zip": "05edbf709b51a4a95b8cbcc932ca725c5137d235dce9cb0d59027662257e7ac5",
380380
"https://storage.googleapis.com/cockroach-godeps/gomod/github.com/cockroachdb/vitess/com_github_cockroachdb_vitess-v0.0.0-20210218160543-54524729cc82.zip": "71f14e67f9396930d978d85c47b853f5cc4ce340e53cf88bf7d731b8428b2f77",
381381
"https://storage.googleapis.com/cockroach-godeps/gomod/github.com/cockroachdb/x-time/com_github_cockroachdb_x_time-v0.3.1-0.20230525123634-71747adb5d5c.zip": "b151d95b9250e6aab7e53ea08bf6a9ca31c2aa964723baa1df28082589f01b21",
382382
"https://storage.googleapis.com/cockroach-godeps/gomod/github.com/cockroachdb/yaml/com_github_cockroachdb_yaml-v0.0.0-20210825132133-2d6955c8edbc.zip": "98f901d1a2446ea98010e56f8f0587f2f790704ea56d14417803602b214e5697",

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ require (
146146
github.com/cockroachdb/tokenbucket v0.0.0-20250429170803-42689b6311bb
147147
github.com/cockroachdb/tools v0.0.0-20211112185054-642e51449b40
148148
github.com/cockroachdb/ttycolor v0.0.0-20210902133924-c7d7dcdde4e8
149-
github.com/cockroachdb/version v0.0.0-20250314144055-3860cd14adf2
149+
github.com/cockroachdb/version v0.0.0-20250509181251-54dac3003410
150150
github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd
151151
github.com/containerd/containerd v1.6.18
152152
github.com/coreos/go-oidc v2.2.1+incompatible

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -618,8 +618,8 @@ github.com/cockroachdb/tools v0.0.0-20211112185054-642e51449b40 h1:qVTb3XEv+7VVj
618618
github.com/cockroachdb/tools v0.0.0-20211112185054-642e51449b40/go.mod h1:cllxeV+TYc387/XzQRnDg6YThHoDzFewovWffzAm37Q=
619619
github.com/cockroachdb/ttycolor v0.0.0-20210902133924-c7d7dcdde4e8 h1:Hli+oX84dKq44sLVCcsGKqifm5Lg9J8VoJ2P3h9iPdI=
620620
github.com/cockroachdb/ttycolor v0.0.0-20210902133924-c7d7dcdde4e8/go.mod h1:75wnig8+TF6vst9hChkpcFO7YrRLddouJ5is8uqpfv0=
621-
github.com/cockroachdb/version v0.0.0-20250314144055-3860cd14adf2 h1:8Vfw2iNEpYIV6aLtMwT5UOGuPmp9MKlEKWKFTuB+MPU=
622-
github.com/cockroachdb/version v0.0.0-20250314144055-3860cd14adf2/go.mod h1:P9WiZOdQ1R/ZZDL0WzF5wlyRvrjtfhNOwMZymFpBwjE=
621+
github.com/cockroachdb/version v0.0.0-20250509181251-54dac3003410 h1:GuIAxxl30gmd9m7ct6fgYb49GUv8GAxICU5VfU9GRvc=
622+
github.com/cockroachdb/version v0.0.0-20250509181251-54dac3003410/go.mod h1:P9WiZOdQ1R/ZZDL0WzF5wlyRvrjtfhNOwMZymFpBwjE=
623623
github.com/cockroachdb/vitess v0.0.0-20210218160543-54524729cc82 h1:8htEd1lLILqfjKardWfKKGgXVCs0WmcgEj9cXnmcuos=
624624
github.com/cockroachdb/vitess v0.0.0-20210218160543-54524729cc82/go.mod h1:+bhevpN4bd6bstiRREkJDaMWZR3lTe5ypydTtXgf7GU=
625625
github.com/cockroachdb/x-time v0.3.1-0.20230525123634-71747adb5d5c h1:fL+zfQ88TclMTv0pWlHhe3z+rZvb9CpyCp+fFQSN2Ys=

pkg/build/info.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ func VersionForURLs() string {
116116
if phaseAndOrdinal <= "alpha.1" {
117117
return "dev"
118118
}
119-
} else if parsedVersionTxt.IsCustomOrNightlyBuild() {
119+
} else if parsedVersionTxt.IsCustomOrAdhocBuild() {
120120
return "dev"
121121
}
122122
return parsedVersionTxt.Major().String()

pkg/cmd/release/BUILD.bazel

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,7 @@ go_library(
55
srcs = [
66
"git.go",
77
"main.go",
8-
"orchestration.go",
98
"sender.go",
10-
"set_cockroach_version.go",
119
"templates.go",
1210
"update_brew.go",
1311
"update_helm.go",
@@ -24,7 +22,6 @@ go_library(
2422
"//pkg/util/timeutil",
2523
"@com_github_cockroachdb_version//:version",
2624
"@com_github_jordan_wright_email//:email",
27-
"@com_github_masterminds_semver_v3//:semver",
2825
"@com_github_spf13_cobra//:cobra",
2926
"@in_gopkg_yaml_v2//:yaml_v2",
3027
],
@@ -49,6 +46,7 @@ go_test(
4946
embed = [":release_lib"],
5047
deps = [
5148
"//pkg/testutils/release",
49+
"@com_github_cockroachdb_version//:version",
5250
"@com_github_stretchr_testify//require",
5351
"@in_gopkg_yaml_v2//:yaml_v2",
5452
],

pkg/cmd/release/git.go

Lines changed: 20 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,16 @@ import (
1010
"fmt"
1111
"log"
1212
"os/exec"
13-
"sort"
14-
"strconv"
13+
"slices"
1514
"strings"
1615

17-
"github.com/Masterminds/semver/v3"
16+
"github.com/cockroachdb/version"
1817
)
1918

2019
const remoteOrigin = "origin"
2120

22-
func findVersions(text string) []*semver.Version {
23-
var versions []*semver.Version
21+
func findVersions(text string) []version.Version {
22+
var versions []version.Version
2423
for _, line := range strings.Split(text, "\n") {
2524
trimmedLine := strings.TrimSpace(line)
2625
if trimmedLine == "" {
@@ -30,7 +29,7 @@ func findVersions(text string) []*semver.Version {
3029
if strings.Contains(trimmedLine, "-alpha.0000") {
3130
continue
3231
}
33-
version, err := semver.NewVersion(trimmedLine)
32+
version, err := version.Parse(trimmedLine)
3433
if err != nil {
3534
fmt.Printf("WARNING: cannot parse version '%s'\n", trimmedLine)
3635
continue
@@ -59,52 +58,36 @@ func findPreviousRelease(releaseSeries string, ignorePrereleases bool) (string,
5958
return "", fmt.Errorf("zero versions found")
6059
}
6160
if ignorePrereleases {
62-
var filteredVersions []*semver.Version
61+
var filteredVersions []version.Version
6362
for _, v := range versions {
64-
if v.Prerelease() == "" {
63+
if !v.IsPrerelease() {
6564
filteredVersions = append(filteredVersions, v)
6665
}
6766
}
6867
versions = filteredVersions
6968
}
70-
sort.Sort(semver.Collection(versions))
71-
return versions[len(versions)-1].Original(), nil
69+
slices.SortFunc(versions, func(a, b version.Version) int {
70+
return a.Compare(b)
71+
})
72+
return versions[len(versions)-1].String(), nil
7273
}
7374

7475
// bumpVersion increases the patch release version (the last digit) of a given version.
7576
// For pre-release versions, the pre-release part is bumped.
76-
func bumpVersion(version string) (string, error) {
77+
func bumpVersion(versionStr string) (version.Version, error) {
7778
// special case for versions like v23.2.0-alpha.00000000
78-
if strings.HasSuffix(version, "-alpha.00000000") {
79+
if strings.HasSuffix(versionStr, "-alpha.00000000") {
7980
// reset the version to something we can parse and bump
80-
version = strings.TrimSuffix(version, ".00000000") + ".0"
81+
versionStr = strings.TrimSuffix(versionStr, ".00000000") + ".0"
8182
}
82-
semanticVersion, err := semver.NewVersion(version)
83+
ver, err := version.Parse(versionStr)
8384
if err != nil {
84-
return "", fmt.Errorf("cannot parse version: %w", err)
85-
}
86-
var nextVersion semver.Version
87-
if semanticVersion.Prerelease() == "" {
88-
// For regular releases we can use IncPatch without any modification
89-
nextVersion = semanticVersion.IncPatch()
90-
} else {
91-
// For pre-releases (alpha, beta, rc), we need to implement our own bumper. It takes the last digit and increments it.
92-
pre := semanticVersion.Prerelease()
93-
preType, digit, found := strings.Cut(pre, ".")
94-
if !found {
95-
return "", fmt.Errorf("parsing prerelease %s", semanticVersion.Original())
96-
}
97-
preVersion, err := strconv.Atoi(digit)
98-
if err != nil {
99-
return "", fmt.Errorf("atoi prerelease error %s: %w", semanticVersion.Original(), err)
100-
}
101-
preVersion++
102-
nextVersion, err = semanticVersion.SetPrerelease(fmt.Sprintf("%s.%d", preType, preVersion))
103-
if err != nil {
104-
return "", fmt.Errorf("bumping prerelease %s: %w", semanticVersion.Original(), err)
105-
}
85+
return version.Version{}, fmt.Errorf("cannot parse version: %w", err)
86+
}
87+
if ver.IsPrerelease() {
88+
return ver.IncPreRelease()
10689
}
107-
return nextVersion.Original(), nil
90+
return ver.IncPatch()
10891
}
10992

11093
// listRemoteBranches retrieves a list of remote branches using a pattern, assuming the remote name is `origin`.

pkg/cmd/release/git_test.go

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,11 @@
55

66
package main
77

8-
import "testing"
8+
import (
9+
"testing"
10+
11+
"github.com/cockroachdb/version"
12+
)
913

1014
func TestBumpVersion(t *testing.T) {
1115
tests := []struct {
@@ -112,11 +116,14 @@ func TestBumpVersion(t *testing.T) {
112116
for _, tt := range tests {
113117
t.Run(tt.version, func(t *testing.T) {
114118
got, err := bumpVersion(tt.version)
115-
if (err != nil) != tt.wantErr {
116-
t.Errorf("bumpVersion() error = %v, wantErr %v", err, tt.wantErr)
119+
if tt.wantErr {
120+
if err == nil {
121+
t.Errorf("bumpVersion() error = %v, wantErr %v", err, tt.wantErr)
122+
}
117123
return
118124
}
119-
if got != tt.nextVersion {
125+
expected := version.MustParse(tt.nextVersion)
126+
if got != expected {
120127
t.Errorf("bumpVersion() got = %v, nextVersion %v", got, tt.nextVersion)
121128
}
122129
})

pkg/cmd/release/main.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,6 @@ func main() {
3636
}
3737

3838
func init() {
39-
rootCmd.AddCommand(setOrchestrationVersionCmd)
4039
rootCmd.AddCommand(updateReleasesTestFilesCmd)
41-
rootCmd.AddCommand(setCockroachVersionCmd)
4240
rootCmd.AddCommand(updateVersionsCmd)
4341
}

pkg/cmd/release/orchestration.go

Lines changed: 0 additions & 43 deletions
This file was deleted.

0 commit comments

Comments
 (0)