INNER CODE UNIT · Go

CompareVersionNumbers

kubesphere/kubekey · builtin/core/upgrade_path.go:246

func CompareVersionNumbers(a, b string) int {
	return compareVersionNumbers(a, b)
}

// compareVersionNumbers orders two version strings by semver semantics, using the
// same Masterminds/semver library that backs the template pipeline's semverCompare
// function (pkg/converter/tmpl -> sprig.TxtFuncMap -> semverCompare). It accepts
// the heterogeneous per-minor version strings (leading "v", e.g. "v3.5.15";
// single/two-part forms like "3.6"; prerelease suffixes like "2.9.6-alpine") and
// returns -1, 0, or +1. If either side does not parse as semver, it falls back to
// plain string ordering so the monotonically-upgrade guard never silently passes a
// genuinely lower value.
func compareVersionNumbers(a, b string) int {
	va, aerr := semver.NewVersion(a)
	vb, berr := semver.NewVersion(b)
	if aerr == nil && berr == nil {
		return va.Compare(vb)
	}

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…