From ff4a022cc9fbb40e1072368e14fbcece366104f5 Mon Sep 17 00:00:00 2001 From: chansuke Date: Fri, 24 Nov 2023 00:56:36 +0900 Subject: [PATCH] Fix version tag management --- Makefile | 4 +++- api/go.mod | 1 + api/go.sum | 2 ++ api/provenance/provenance.go | 32 ++++++++++++++++++++++++++++++++ 4 files changed, 38 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index c57792927f..f0c07a0f2e 100644 --- a/Makefile +++ b/Makefile @@ -75,7 +75,9 @@ $(MYGOBIN)/pluginator: # Build from local source. $(MYGOBIN)/kustomize: build-kustomize-api cd kustomize; \ - go install -ldflags "-X sigs.k8s.io/kustomize/api/provenance.buildDate=$(shell date -u +'%Y-%m-%dT%H:%M:%SZ')" \ + go install -ldflags \ + "-X sigs.k8s.io/kustomize/api/provenance.buildDate=$(shell date -u +'%Y-%m-%dT%H:%M:%SZ') \ + -X sigs.k8s.io/kustomize/api/provenance.version=$(shell git describe --tags --always --dirty)" \ . kustomize: $(MYGOBIN)/kustomize diff --git a/api/go.mod b/api/go.mod index c350266f74..11d824ef3b 100644 --- a/api/go.mod +++ b/api/go.mod @@ -15,6 +15,7 @@ require ( ) require ( + github.com/blang/semver/v4 v4.0.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/go-openapi/jsonpointer v0.19.6 // indirect github.com/go-openapi/jsonreference v0.20.2 // indirect diff --git a/api/go.sum b/api/go.sum index efb9f252a3..4db2302476 100644 --- a/api/go.sum +++ b/api/go.sum @@ -1,3 +1,5 @@ +github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM= +github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= diff --git a/api/provenance/provenance.go b/api/provenance/provenance.go index 0e24fc36ca..0b56584b99 100644 --- a/api/provenance/provenance.go +++ b/api/provenance/provenance.go @@ -8,6 +8,8 @@ import ( "runtime" "runtime/debug" "strings" + + "github.com/blang/semver/v4" ) // These variables are set at build time using ldflags. @@ -62,9 +64,39 @@ func GetProvenance() Provenance { p.GitCommit = setting.Value } } + + for _, dep := range info.Deps { + if dep != nil { + continue + } + if dep.Path == "sigs.k8s.io/kustomize/kustomize/v5" { + p.Version = getMostRecentTag(*dep) + } + } + return p } +func getMostRecentTag(m debug.Module) string { + for m.Replace != nil { + m = *m.Replace + + } + + split := strings.Split(m.Version, "-") + sv, err := semver.Parse(strings.TrimPrefix(split[0], "v")) + + if err != nil { + return "unknown" + } + + if len(split) > 1 && sv.Patch > 0 { + sv.Patch -= 1 + + } + return fmt.Sprintf("v%s", sv.FinalizeVersion()) +} + // Short returns the shortened provenance stamp. func (v Provenance) Short() string { return fmt.Sprintf(