Skip to content

Commit dbcfdd9

Browse files
authored
make build system name configurable (#18779)
Signed-off-by: Stephen Baker <[email protected]>
1 parent 943dd00 commit dbcfdd9

File tree

3 files changed

+53
-40
lines changed

3 files changed

+53
-40
lines changed

go/vt/servenv/buildinfo.go

Lines changed: 44 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,14 @@ import (
2828
)
2929

3030
var (
31-
buildHost = ""
32-
buildUser = ""
33-
buildTime = ""
34-
buildGitRev = ""
35-
buildGitBranch = ""
36-
statsBuildVersion *stats.String
37-
jenkinsBuildNumberStr = ""
31+
buildHost = ""
32+
buildUser = ""
33+
buildTime = ""
34+
buildGitRev = ""
35+
buildGitBranch = ""
36+
statsBuildVersion *stats.String
37+
buildNumberStr = ""
38+
buildSystem = ""
3839

3940
// version registers the command line flag to expose build info.
4041
version bool
@@ -48,17 +49,18 @@ func registerVersionFlag(fs *pflag.FlagSet) {
4849
var AppVersion versionInfo
4950

5051
type versionInfo struct {
51-
buildHost string
52-
buildUser string
53-
buildTime int64
54-
buildTimePretty string
55-
buildGitRev string
56-
buildGitBranch string
57-
jenkinsBuildNumber int64
58-
goVersion string
59-
goOS string
60-
goArch string
61-
version string
52+
buildHost string
53+
buildUser string
54+
buildTime int64
55+
buildTimePretty string
56+
buildGitRev string
57+
buildGitBranch string
58+
buildNumber int64
59+
buildSystem string
60+
goVersion string
61+
goOS string
62+
goArch string
63+
version string
6264
}
6365

6466
// ToStringMap returns the version info as a map[string]string, allowing version
@@ -83,12 +85,16 @@ func (v *versionInfo) Print() {
8385
}
8486

8587
func (v *versionInfo) String() string {
86-
jenkins := ""
87-
if v.jenkinsBuildNumber != 0 {
88-
jenkins = fmt.Sprintf(" (Jenkins build %d)", v.jenkinsBuildNumber)
88+
buildInfo := ""
89+
if v.buildNumber != 0 {
90+
if v.buildSystem != "" {
91+
buildInfo = fmt.Sprintf(" (%s build %d)", v.buildSystem, v.buildNumber)
92+
} else {
93+
buildInfo = fmt.Sprintf(" (build %d)", v.buildNumber)
94+
}
8995
}
9096
return fmt.Sprintf("Version: %s%s (Git revision %s branch '%s') built on %s by %s@%s using %s %s/%s",
91-
v.version, jenkins, v.buildGitRev, v.buildGitBranch, v.buildTimePretty, v.buildUser, v.buildHost, v.goVersion, v.goOS, v.goArch)
97+
v.version, buildInfo, v.buildGitRev, v.buildGitBranch, v.buildTimePretty, v.buildUser, v.buildHost, v.goVersion, v.goOS, v.goArch)
9298
}
9399

94100
func (v *versionInfo) MySQLVersion() string {
@@ -101,23 +107,24 @@ func init() {
101107
panic(fmt.Sprintf("Couldn't parse build timestamp %q: %v", buildTime, err))
102108
}
103109

104-
jenkinsBuildNumber, err := strconv.ParseInt(jenkinsBuildNumberStr, 10, 64)
110+
buildNumber, err := strconv.ParseInt(buildNumberStr, 10, 64)
105111
if err != nil {
106-
jenkinsBuildNumber = 0
112+
buildNumber = 0
107113
}
108114

109115
AppVersion = versionInfo{
110-
buildHost: buildHost,
111-
buildUser: buildUser,
112-
buildTime: t.Unix(),
113-
buildTimePretty: buildTime,
114-
buildGitRev: buildGitRev,
115-
buildGitBranch: buildGitBranch,
116-
jenkinsBuildNumber: jenkinsBuildNumber,
117-
goVersion: runtime.Version(),
118-
goOS: runtime.GOOS,
119-
goArch: runtime.GOARCH,
120-
version: versionName,
116+
buildHost: buildHost,
117+
buildUser: buildUser,
118+
buildTime: t.Unix(),
119+
buildTimePretty: buildTime,
120+
buildGitRev: buildGitRev,
121+
buildGitBranch: buildGitBranch,
122+
buildNumber: buildNumber,
123+
buildSystem: buildSystem,
124+
goVersion: runtime.Version(),
125+
goOS: runtime.GOOS,
126+
goArch: runtime.GOARCH,
127+
version: versionName,
121128
}
122129
stats.NewString("BuildHost").Set(AppVersion.buildHost)
123130
stats.NewString("BuildUser").Set(AppVersion.buildUser)
@@ -126,7 +133,7 @@ func init() {
126133
statsBuildVersion.Set(AppVersion.version)
127134
stats.NewString("BuildGitRev").Set(AppVersion.buildGitRev)
128135
stats.NewString("BuildGitBranch").Set(AppVersion.buildGitBranch)
129-
stats.NewGauge("BuildNumber", "build number").Set(AppVersion.jenkinsBuildNumber)
136+
stats.NewGauge("BuildNumber", "build number").Set(AppVersion.buildNumber)
130137
stats.NewString("GoVersion").Set(AppVersion.goVersion)
131138
stats.NewString("GoOS").Set(AppVersion.goOS)
132139
stats.NewString("GoArch").Set(AppVersion.goArch)
@@ -138,7 +145,7 @@ func init() {
138145
strconv.FormatInt(AppVersion.buildTime, 10),
139146
AppVersion.buildGitRev,
140147
AppVersion.buildGitBranch,
141-
strconv.FormatInt(AppVersion.jenkinsBuildNumber, 10),
148+
strconv.FormatInt(AppVersion.buildNumber, 10),
142149
}
143150
stats.NewGaugesWithMultiLabels("BuildInformation", "build information exposed via label", buildLabels).Set(buildValues, 1)
144151

go/vt/servenv/buildinfo_test.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,16 @@ func TestVersionString(t *testing.T) {
3939
version: "v1.2.3-SNAPSHOT",
4040
}
4141

42+
// Test case 1: No build number or system
4243
assert.Equal(t, "Version: v1.2.3-SNAPSHOT (Git revision d54b87ca0be09b678bb4490060e8f23f890ddb92 branch 'gitBranch') built on time is now by user@host using 1.20.2 amiga/amd64", v.String())
4344

44-
v.jenkinsBuildNumber = 422
45+
// Test case 2: With build number but no build system
46+
v.buildNumber = 422
47+
assert.Equal(t, "Version: v1.2.3-SNAPSHOT (build 422) (Git revision d54b87ca0be09b678bb4490060e8f23f890ddb92 branch 'gitBranch') built on time is now by user@host using 1.20.2 amiga/amd64", v.String())
4548

46-
assert.Equal(t, "Version: v1.2.3-SNAPSHOT (Jenkins build 422) (Git revision d54b87ca0be09b678bb4490060e8f23f890ddb92 branch 'gitBranch') built on time is now by user@host using 1.20.2 amiga/amd64", v.String())
49+
// Test case 3: With build number and custom build system
50+
v.buildSystem = "GHA"
51+
assert.Equal(t, "Version: v1.2.3-SNAPSHOT (GHA build 422) (Git revision d54b87ca0be09b678bb4490060e8f23f890ddb92 branch 'gitBranch') built on time is now by user@host using 1.20.2 amiga/amd64", v.String())
4752

4853
assert.Equal(t, "8.4.6-Vitess", v.MySQLVersion())
4954
}

tools/build_version_flags.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,5 +31,6 @@ echo "\
3131
-X 'vitess.io/vitess/go/vt/servenv.buildGitRev=${BUILD_GIT_REV:-$DEFAULT_BUILD_GIT_REV}' \
3232
-X 'vitess.io/vitess/go/vt/servenv.buildGitBranch=${BUILD_GIT_BRANCH:-$DEFAULT_BUILD_GIT_BRANCH}' \
3333
-X 'vitess.io/vitess/go/vt/servenv.buildTime=${BUILD_TIME:-$DEFAULT_BUILD_TIME}' \
34-
-X 'vitess.io/vitess/go/vt/servenv.jenkinsBuildNumberStr=${BUILD_NUMBER}' \
34+
-X 'vitess.io/vitess/go/vt/servenv.buildNumberStr=${BUILD_NUMBER}' \
35+
-X 'vitess.io/vitess/go/vt/servenv.buildSystem=${BUILD_SYSTEM}' \
3536
"

0 commit comments

Comments
 (0)