diff --git a/build b/build index 6702923c6..2bb96e58f 100755 --- a/build +++ b/build @@ -11,6 +11,8 @@ ln -s ${PWD} $GOPATH/src/${REPO_PATH} eval $(go env) +GIT_SHA=`git rev-parse --short HEAD` + # Static compilation is useful when etcd is run in a container -CGO_ENABLED=0 go build -a -installsuffix cgo -ldflags '-s' -o bin/etcd ${REPO_PATH} -CGO_ENABLED=0 go build -a -installsuffix cgo -ldflags '-s' -o bin/etcdctl ${REPO_PATH}/etcdctl +CGO_ENABLED=0 go build -a -installsuffix cgo -ldflags "-s -X ${REPO_PATH}/version.GitSHA ${GIT_SHA}" -o bin/etcd ${REPO_PATH} +CGO_ENABLED=0 go build -a -installsuffix cgo -ldflags "-s" -o bin/etcdctl ${REPO_PATH}/etcdctl diff --git a/etcdmain/config.go b/etcdmain/config.go index 047920e08..c18023f36 100644 --- a/etcdmain/config.go +++ b/etcdmain/config.go @@ -19,6 +19,7 @@ import ( "fmt" "net/url" "os" + "runtime" "strings" "github.com/coreos/etcd/etcdserver" @@ -223,7 +224,10 @@ func (cfg *config) Parse(arguments []string) error { } if cfg.printVersion { - fmt.Println("etcd version", version.Version) + fmt.Printf("etcd Version: %s\n", version.Version) + fmt.Printf("Git SHA: %s\n", version.GitSHA) + fmt.Printf("Go Version: %s\n", runtime.Version()) + fmt.Printf("Go OS/Arch: %s/%s\n", runtime.GOOS, runtime.GOARCH) os.Exit(0) } diff --git a/version/version.go b/version/version.go index 516ef9316..3c4cf1dd3 100644 --- a/version/version.go +++ b/version/version.go @@ -28,6 +28,9 @@ var ( // MinClusterVersion is the min cluster version this etcd binary is compatible with. MinClusterVersion = "2.0.0" Version = "2.1.0-alpha.0+git" + + // Git SHA Value will be set during build + GitSHA = "Not provided (use ./build instead of go build)" ) // WalVersion is an enum for versions of etcd logs.