cmk: add git sha and build timestamp from makefile
With this change `cmk -v` will output git sha and build timestamp.
Signed-off-by: Rohit Yadav <rohit@apache.org>
diff --git a/Makefile b/Makefile
index 7bb027e..174c58a 100644
--- a/Makefile
+++ b/Makefile
@@ -24,6 +24,7 @@
BASE = $(CURDIR)
PKGS = $(or $(PKG),$(shell $(GO) list ./... | grep -v "^$(PACKAGE)/vendor/"))
TESTPKGS = $(shell $(GO) list -f '{{ if or .TestGoFiles .XTestGoFiles }}{{ .ImportPath }}{{ end }}' $(PKGS))
+GIT_SHA = $(shell git rev-parse --short HEAD)
GO = go
GODOC = godoc
@@ -34,10 +35,10 @@
M = $(shell printf "\033[34;1m▶\033[0m ")
.PHONY: all
-all: fmt ; $(info $(M) Building executable…) @ ## Build program binary
+all: fmt ; $(info $(M) Building executable… $(GIT_SHA)) @ ## Build program binary
$Q $(GO) build -mod=vendor \
-tags release \
- -ldflags '-s -w -X $(PACKAGE)/cmd.Version=$(VERSION) -X $(PACKAGE)/cmd.BuildDate=$(DATE)' \
+ -ldflags '-s -w -X main.GitSHA=$(GIT_SHA) -X main.BuildDate=$(DATE)' \
-o bin/$(PACKAGE) cmk.go
$(info $(M) Done!) @
@@ -50,10 +51,10 @@
dist: all
rm -fr dist
mkdir -p dist
- GOOS=linux GOARCH=amd64 $(GO) build -mod=vendor -ldflags='-s -w' -o dist/cmk.linux.amd64 cmk.go
- GOOS=linux GOARCH=arm64 $(GO) build -mod=vendor -ldflags='-s -w' -o dist/cmk.linux.arm64 cmk.go
- GOOS=windows GOARCH=amd64 $(GO) build -mod=vendor -ldflags='-s -w' -o dist/cmk.exe cmk.go
- GOOS=darwin GOARCH=amd64 $(GO) build -mod=vendor -ldflags='-s -w' -o dist/cmk.darwin.amd64 cmk.go
+ GOOS=linux GOARCH=amd64 $(GO) build -mod=vendor -ldflags='-s -w -X main.GitSHA=$(GIT_SHA) -X main.BuildDate=$(DATE)' -o dist/cmk.linux.amd64 cmk.go
+ GOOS=linux GOARCH=arm64 $(GO) build -mod=vendor -ldflags='-s -w -X main.GitSHA=$(GIT_SHA) -X main.BuildDate=$(DATE)' -o dist/cmk.linux.arm64 cmk.go
+ GOOS=windows GOARCH=amd64 $(GO) build -mod=vendor -ldflags='-s -w -X main.GitSHA=$(GIT_SHA) -X main.BuildDate=$(DATE)' -o dist/cmk.exe cmk.go
+ GOOS=darwin GOARCH=amd64 $(GO) build -mod=vendor -ldflags='-s -w -X main.GitSHA=$(GIT_SHA) -X main.BuildDate=$(DATE)' -o dist/cmk.darwin.amd64 cmk.go
# Tools
diff --git a/cmk.go b/cmk.go
index 1afc26e..fad4f49 100644
--- a/cmk.go
+++ b/cmk.go
@@ -27,6 +27,12 @@
"github.com/apache/cloudstack-cloudmonkey/config"
)
+// GitSHA holds the git SHA
+var GitSHA string
+
+// BuildDate holds the build datetime
+var BuildDate string
+
func init() {
flag.Usage = func() {
cmd.PrintUsage()
@@ -38,12 +44,13 @@
showVersion := flag.Bool("v", false, "show version")
debug := flag.Bool("d", false, "enable debug mode")
profile := flag.String("p", "", "server profile")
+
flag.Parse()
cfg := config.NewConfig()
if *showVersion {
- fmt.Println(cfg.Name(), cfg.Version())
+ fmt.Printf("%s %s (build: %s, %s)\n", cfg.Name(), cfg.Version(), GitSHA, BuildDate)
os.Exit(0)
}