From abecdc71424545a7ae66e67d747bb2034957eb7e Mon Sep 17 00:00:00 2001 From: Carlos Tadeu Panato Junior <ctadeu@gmail.com> Date: Sun, 8 Aug 2021 16:22:23 +0200 Subject: [PATCH] version: add way to display a version when using go get or go install (#405) Signed-off-by: Carlos Panato <ctadeu@gmail.com> --- Makefile | 4 ++-- cmd/rekor-cli/app/root.go | 14 ++++++++++++++ cmd/rekor-cli/app/version.go | 4 ++-- cmd/rekor-server/app/root.go | 14 ++++++++++++++ cmd/rekor-server/app/version.go | 4 ++-- 5 files changed, 34 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index cb3f873..a561835 100644 --- a/Makefile +++ b/Makefile @@ -44,10 +44,10 @@ endif SWAGGER := $(TOOLS_BIN_DIR)/swagger CLI_PKG=github.com/sigstore/rekor/cmd/rekor-cli/app -CLI_LDFLAGS="-X $(CLI_PKG).gitVersion=$(GIT_VERSION) -X $(CLI_PKG).gitCommit=$(GIT_HASH) -X $(CLI_PKG).gitTreeState=$(GIT_TREESTATE) -X $(CLI_PKG).buildDate=$(BUILD_DATE)" +CLI_LDFLAGS="-X $(CLI_PKG).GitVersion=$(GIT_VERSION) -X $(CLI_PKG).gitCommit=$(GIT_HASH) -X $(CLI_PKG).gitTreeState=$(GIT_TREESTATE) -X $(CLI_PKG).buildDate=$(BUILD_DATE)" SERVER_PKG=github.com/sigstore/rekor/cmd/rekor-server/app -SERVER_LDFLAGS="-X $(SERVER_PKG).gitVersion=$(GIT_VERSION) -X $(SERVER_PKG).gitCommit=$(GIT_HASH) -X $(SERVER_PKG).gitTreeState=$(GIT_TREESTATE) -X $(SERVER_PKG).buildDate=$(BUILD_DATE)" +SERVER_LDFLAGS="-X $(SERVER_PKG).GitVersion=$(GIT_VERSION) -X $(SERVER_PKG).gitCommit=$(GIT_HASH) -X $(SERVER_PKG).gitTreeState=$(GIT_TREESTATE) -X $(SERVER_PKG).buildDate=$(BUILD_DATE)" $(GENSRC): $(SWAGGER) $(OPENAPIDEPS) $(SWAGGER) generate client -f openapi.yaml -q -r COPYRIGHT.txt -t pkg/generated --default-consumes application/json\;q=1 diff --git a/cmd/rekor-cli/app/root.go b/cmd/rekor-cli/app/root.go index 67f2333..fa99504 100644 --- a/cmd/rekor-cli/app/root.go +++ b/cmd/rekor-cli/app/root.go @@ -17,6 +17,7 @@ package app import ( "fmt" + "runtime/debug" "strings" homedir "github.com/mitchellh/go-homedir" @@ -67,6 +68,19 @@ func init() { if err := viper.BindPFlags(rootCmd.PersistentFlags()); err != nil { log.CliLogger.Fatal(err) } + + // look for the default version and replace it, if found, from runtime build info + if GitVersion != "devel" { + return + } + + bi, ok := debug.ReadBuildInfo() + if !ok { + return + } + // Version is set in artifacts built with -X github.com/sigstore/rekor/cmd/rekor-cli/app.GitVersion=1.2.3 + // Ensure version is also set when installed via go install github.com/sigstore/rekor/cmd/rekor-cli + GitVersion = bi.Main.Version } func initConfig(cmd *cobra.Command) error { diff --git a/cmd/rekor-cli/app/version.go b/cmd/rekor-cli/app/version.go index 950f494..172093a 100644 --- a/cmd/rekor-cli/app/version.go +++ b/cmd/rekor-cli/app/version.go @@ -33,7 +33,7 @@ import ( var ( // Output of "git describe". The prerequisite is that the branch should be // tagged using the correct versioning strategy. - gitVersion = "unknown" + GitVersion string = "devel" // SHA1 from git, output of $(git rev-parse HEAD) gitCommit = "unknown" // State of git tree, either "clean" or "dirty" @@ -93,7 +93,7 @@ func VersionInfo() Info { // These variables typically come from -ldflags settings and in // their absence fallback to the global defaults set above. return Info{ - GitVersion: gitVersion, + GitVersion: GitVersion, GitCommit: gitCommit, GitTreeState: gitTreeState, BuildDate: buildDate, diff --git a/cmd/rekor-server/app/root.go b/cmd/rekor-server/app/root.go index 23bf6c2..9f53fa9 100644 --- a/cmd/rekor-server/app/root.go +++ b/cmd/rekor-server/app/root.go @@ -18,6 +18,7 @@ package app import ( "fmt" "os" + "runtime/debug" homedir "github.com/mitchellh/go-homedir" "github.com/spf13/cobra" @@ -79,6 +80,19 @@ func init() { } rootCmd.Flags().BoolP("toggle", "t", false, "Help message for toggle") + + // look for the default version and replace it, if found, from runtime build info + if GitVersion != "devel" { + return + } + + bi, ok := debug.ReadBuildInfo() + if !ok { + return + } + // Version is set in artifacts built with -X github.com/sigstore/rekor/cmd/rekor-server/app.GitVersion=1.2.3 + // Ensure version is also set when installed via go install github.com/sigstore/rekor/cmd/rekor-server + GitVersion = bi.Main.Version } // initConfig reads in config file and ENV variables if set. diff --git a/cmd/rekor-server/app/version.go b/cmd/rekor-server/app/version.go index ded30e0..917e910 100644 --- a/cmd/rekor-server/app/version.go +++ b/cmd/rekor-server/app/version.go @@ -33,7 +33,7 @@ import ( var ( // Output of "git describe". The prerequisite is that the branch should be // tagged using the correct versioning strategy. - gitVersion = "unknown" + GitVersion string = "devel" // SHA1 from git, output of $(git rev-parse HEAD) gitCommit = "unknown" // State of git tree, either "clean" or "dirty" @@ -93,7 +93,7 @@ func VersionInfo() Info { // These variables typically come from -ldflags settings and in // their absence fallback to the global defaults set above. return Info{ - GitVersion: gitVersion, + GitVersion: GitVersion, GitCommit: gitCommit, GitTreeState: gitTreeState, BuildDate: buildDate, -- GitLab