Some checks are pending
Security Checks / security (push) Waiting to run
统一 frontend、backend、test、test-log 和 out 目录,更新构建、部署及测试入口;纳入配置管理兼容与首次安全引导修复;排除本机配置、密钥和测试产物。
58 lines
1.4 KiB
Go
58 lines
1.4 KiB
Go
package buildinfo
|
|
|
|
import "strings"
|
|
|
|
const ProtocolVersion = 1
|
|
|
|
var (
|
|
Version = "dev"
|
|
GitHash = "unknown"
|
|
BuildTime = "unknown"
|
|
GoVersion = "unknown"
|
|
)
|
|
|
|
type Info struct {
|
|
Version string
|
|
GitHash string
|
|
BuildTime string
|
|
GoVersion string
|
|
ProtocolVersion int
|
|
}
|
|
|
|
func Current() Info {
|
|
return Info{
|
|
Version: valueOrDefault(Version, "dev"),
|
|
GitHash: valueOrDefault(GitHash, "unknown"),
|
|
BuildTime: valueOrDefault(BuildTime, "unknown"),
|
|
GoVersion: valueOrDefault(GoVersion, "unknown"),
|
|
ProtocolVersion: ProtocolVersion,
|
|
}
|
|
}
|
|
|
|
func ValidatePair(mainInfo, adminInfo Info) error {
|
|
if strings.TrimSpace(mainInfo.Version) == "" || strings.TrimSpace(adminInfo.Version) == "" {
|
|
return ErrVersionMissing
|
|
}
|
|
if mainInfo.Version != adminInfo.Version {
|
|
return ErrVersionMismatch
|
|
}
|
|
if mainInfo.ProtocolVersion != ProtocolVersion || adminInfo.ProtocolVersion != ProtocolVersion {
|
|
return ErrProtocolMismatch
|
|
}
|
|
if isKnownValue(mainInfo.GitHash) && isKnownValue(adminInfo.GitHash) && mainInfo.GitHash != adminInfo.GitHash {
|
|
return ErrBuildMismatch
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func valueOrDefault(value, fallback string) string {
|
|
if strings.TrimSpace(value) == "" {
|
|
return fallback
|
|
}
|
|
return value
|
|
}
|
|
|
|
func isKnownValue(value string) bool {
|
|
return strings.TrimSpace(value) != "" && value != "unknown" && value != "dev"
|
|
}
|