show version in UI
This commit is contained in:
59
cmd/ingestd/buildinfo.go
Normal file
59
cmd/ingestd/buildinfo.go
Normal file
@@ -0,0 +1,59 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"runtime/debug"
|
||||
"strings"
|
||||
)
|
||||
|
||||
var (
|
||||
version = "dev"
|
||||
gitCommit = "unknown"
|
||||
buildTime = "unknown"
|
||||
)
|
||||
|
||||
type binaryBuildInfo struct {
|
||||
Version string `json:"version"`
|
||||
GitCommit string `json:"git_commit"`
|
||||
BuildTime string `json:"build_time"`
|
||||
}
|
||||
|
||||
func currentBuildInfo() binaryBuildInfo {
|
||||
out := binaryBuildInfo{
|
||||
Version: version,
|
||||
GitCommit: gitCommit,
|
||||
BuildTime: buildTime,
|
||||
}
|
||||
|
||||
if bi, ok := debug.ReadBuildInfo(); ok {
|
||||
if out.Version == "" || out.Version == "dev" {
|
||||
if bi.Main.Version != "" && bi.Main.Version != "(devel)" {
|
||||
out.Version = bi.Main.Version
|
||||
}
|
||||
}
|
||||
for _, s := range bi.Settings {
|
||||
if s.Key == "vcs.revision" && (out.GitCommit == "" || out.GitCommit == "unknown") {
|
||||
if len(s.Value) > 12 {
|
||||
out.GitCommit = s.Value[:12]
|
||||
} else {
|
||||
out.GitCommit = s.Value
|
||||
}
|
||||
}
|
||||
if s.Key == "vcs.time" && (out.BuildTime == "" || out.BuildTime == "unknown") {
|
||||
out.BuildTime = s.Value
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
out.Version = normalizeBuildField(out.Version, "dev")
|
||||
out.GitCommit = normalizeBuildField(out.GitCommit, "unknown")
|
||||
out.BuildTime = normalizeBuildField(out.BuildTime, "unknown")
|
||||
return out
|
||||
}
|
||||
|
||||
func normalizeBuildField(v string, fallback string) string {
|
||||
v = strings.TrimSpace(v)
|
||||
if v == "" {
|
||||
return fallback
|
||||
}
|
||||
return v
|
||||
}
|
||||
Reference in New Issue
Block a user