From 0bcc360de1554b0abf7cb15ae841dc2df6b3d1b6 Mon Sep 17 00:00:00 2001 From: Alberto Ricart Date: Wed, 21 Feb 2018 17:26:41 -0600 Subject: [PATCH 1/2] [ADD] Added `github.com/nats-io/gnatsd/server.GITHASH` compile variable which allows for linker to inject the githash that gnatsd was built from. See https://husobee.github.io/golang/compile/time/variables/2015/12/03/compile-time-const.html. The githash is exposed on server startup (debug) and on /varz. [FIX] Docker images were injecting the compile time variable `github.com/nats-io/gnatsd/version.GITCOMMIT`, however this is not referenced nor exposed anywhere. --- Dockerfile | 2 +- Dockerfile.all | 8 ++++---- server/const.go | 5 +++++ server/server.go | 3 +++ 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/Dockerfile b/Dockerfile index c6d5dbda..d73cfa26 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,7 +5,7 @@ MAINTAINER Derek Collison COPY . /go/src/github.com/nats-io/gnatsd WORKDIR /go/src/github.com/nats-io/gnatsd -RUN CGO_ENABLED=0 go install -v -a -tags netgo -installsuffix netgo -ldflags "-s -w -X github.com/nats-io/gnatsd/version.GITCOMMIT=`git rev-parse --short HEAD`" +RUN CGO_ENABLED=0 go install -v -a -tags netgo -installsuffix netgo -ldflags "-s -w -X github.com/nats-io/gnatsd/server.GITHASH=`git rev-parse --short HEAD`" EXPOSE 4222 8222 ENTRYPOINT ["gnatsd"] diff --git a/Dockerfile.all b/Dockerfile.all index ef51a762..c3026216 100644 --- a/Dockerfile.all +++ b/Dockerfile.all @@ -5,10 +5,10 @@ MAINTAINER Ivan Kozlovic COPY . /go/src/github.com/nats-io/gnatsd WORKDIR /go/src/github.com/nats-io/gnatsd -RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -v -a -tags netgo -installsuffix netgo -ldflags "-s -w -X github.com/nats-io/gnatsd/version.GITCOMMIT=`git rev-parse --short HEAD`" -o pkg/linux-amd64/gnatsd -RUN CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build -v -a -tags netgo -installsuffix netgo -ldflags "-s -w -X github.com/nats-io/gnatsd/version.GITCOMMIT=`git rev-parse --short HEAD`" -o pkg/linux-arm7/gnatsd -RUN CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -v -a -tags netgo -installsuffix netgo -ldflags "-s -w -X github.com/nats-io/gnatsd/version.GITCOMMIT=`git rev-parse --short HEAD`" -o pkg/linux-arm64/gnatsd -RUN CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -v -a -tags netgo -installsuffix netgo -ldflags "-s -w -X github.com/nats-io/gnatsd/version.GITCOMMIT=`git rev-parse --short HEAD`" -o pkg/win-amd64/gnatsd.exe +RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -v -a -tags netgo -installsuffix netgo -ldflags "-s -w -X github.com/nats-io/gnatsd/server.GITHASH=`git rev-parse --short HEAD`" -o pkg/linux-amd64/gnatsd +RUN CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build -v -a -tags netgo -installsuffix netgo -ldflags "-s -w -X github.com/nats-io/gnatsd/server.GITHASH=`git rev-parse --short HEAD`" -o pkg/linux-arm7/gnatsd +RUN CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -v -a -tags netgo -installsuffix netgo -ldflags "-s -w -X github.com/nats-io/gnatsd/server.GITHASH=`git rev-parse --short HEAD`" -o pkg/linux-arm64/gnatsd +RUN CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -v -a -tags netgo -installsuffix netgo -ldflags "-s -w -X github.com/nats-io/gnatsd/server.GITHASH=`git rev-parse --short HEAD`" -o pkg/win-amd64/gnatsd.exe ENTRYPOINT ["go"] CMD ["version"] diff --git a/server/const.go b/server/const.go index a79de11a..77baf581 100644 --- a/server/const.go +++ b/server/const.go @@ -17,6 +17,11 @@ const ( CommandReload = Command("reload") ) +var ( + // GITHASH injected at build + GITHASH string +) + const ( // VERSION is the current version for the server. VERSION = "1.0.4" diff --git a/server/server.go b/server/server.go index 99b92983..9beac328 100644 --- a/server/server.go +++ b/server/server.go @@ -29,6 +29,7 @@ import ( type Info struct { ID string `json:"server_id"` Version string `json:"version"` + GitHash string `json:"git_hash"` GoVersion string `json:"go"` Host string `json:"host"` Port int `json:"port"` @@ -112,6 +113,7 @@ func New(opts *Options) *Server { info := Info{ ID: genID(), Version: VERSION, + GitHash: GITHASH, GoVersion: runtime.Version(), Host: opts.Host, Port: opts.Port, @@ -241,6 +243,7 @@ func (s *Server) logPid() error { func (s *Server) Start() { s.Noticef("Starting nats-server version %s", VERSION) s.Debugf("Go build version %s", s.info.GoVersion) + s.Debugf("GIT hash [%s]", GITHASH) // Avoid RACE between Start() and Shutdown() s.mu.Lock() From 68b7aa0155685124b650344a869b3c5d3d49138b Mon Sep 17 00:00:00 2001 From: Alberto Ricart Date: Wed, 21 Feb 2018 17:26:41 -0600 Subject: [PATCH 2/2] [ADD] Added `github.com/nats-io/gnatsd/server.GITHASH` compile variable which allows for linker to inject the githash that gnatsd was built from. See https://husobee.github.io/golang/compile/time/variables/2015/12/03/compile-time-const.html. The githash is exposed on server startup (debug) and on /varz. [FIX] Docker images were injecting the compile time variable `github.com/nats-io/gnatsd/version.GITCOMMIT`, however this is not referenced nor exposed anywhere. --- Dockerfile | 2 +- Dockerfile.all | 8 ++++---- server/const.go | 5 +++++ server/server.go | 3 +++ 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/Dockerfile b/Dockerfile index c6d5dbda..d73cfa26 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,7 +5,7 @@ MAINTAINER Derek Collison COPY . /go/src/github.com/nats-io/gnatsd WORKDIR /go/src/github.com/nats-io/gnatsd -RUN CGO_ENABLED=0 go install -v -a -tags netgo -installsuffix netgo -ldflags "-s -w -X github.com/nats-io/gnatsd/version.GITCOMMIT=`git rev-parse --short HEAD`" +RUN CGO_ENABLED=0 go install -v -a -tags netgo -installsuffix netgo -ldflags "-s -w -X github.com/nats-io/gnatsd/server.GITHASH=`git rev-parse --short HEAD`" EXPOSE 4222 8222 ENTRYPOINT ["gnatsd"] diff --git a/Dockerfile.all b/Dockerfile.all index ef51a762..c3026216 100644 --- a/Dockerfile.all +++ b/Dockerfile.all @@ -5,10 +5,10 @@ MAINTAINER Ivan Kozlovic COPY . /go/src/github.com/nats-io/gnatsd WORKDIR /go/src/github.com/nats-io/gnatsd -RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -v -a -tags netgo -installsuffix netgo -ldflags "-s -w -X github.com/nats-io/gnatsd/version.GITCOMMIT=`git rev-parse --short HEAD`" -o pkg/linux-amd64/gnatsd -RUN CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build -v -a -tags netgo -installsuffix netgo -ldflags "-s -w -X github.com/nats-io/gnatsd/version.GITCOMMIT=`git rev-parse --short HEAD`" -o pkg/linux-arm7/gnatsd -RUN CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -v -a -tags netgo -installsuffix netgo -ldflags "-s -w -X github.com/nats-io/gnatsd/version.GITCOMMIT=`git rev-parse --short HEAD`" -o pkg/linux-arm64/gnatsd -RUN CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -v -a -tags netgo -installsuffix netgo -ldflags "-s -w -X github.com/nats-io/gnatsd/version.GITCOMMIT=`git rev-parse --short HEAD`" -o pkg/win-amd64/gnatsd.exe +RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -v -a -tags netgo -installsuffix netgo -ldflags "-s -w -X github.com/nats-io/gnatsd/server.GITHASH=`git rev-parse --short HEAD`" -o pkg/linux-amd64/gnatsd +RUN CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build -v -a -tags netgo -installsuffix netgo -ldflags "-s -w -X github.com/nats-io/gnatsd/server.GITHASH=`git rev-parse --short HEAD`" -o pkg/linux-arm7/gnatsd +RUN CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -v -a -tags netgo -installsuffix netgo -ldflags "-s -w -X github.com/nats-io/gnatsd/server.GITHASH=`git rev-parse --short HEAD`" -o pkg/linux-arm64/gnatsd +RUN CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -v -a -tags netgo -installsuffix netgo -ldflags "-s -w -X github.com/nats-io/gnatsd/server.GITHASH=`git rev-parse --short HEAD`" -o pkg/win-amd64/gnatsd.exe ENTRYPOINT ["go"] CMD ["version"] diff --git a/server/const.go b/server/const.go index a79de11a..77baf581 100644 --- a/server/const.go +++ b/server/const.go @@ -17,6 +17,11 @@ const ( CommandReload = Command("reload") ) +var ( + // GITHASH injected at build + GITHASH string +) + const ( // VERSION is the current version for the server. VERSION = "1.0.4" diff --git a/server/server.go b/server/server.go index 99b92983..6a040642 100644 --- a/server/server.go +++ b/server/server.go @@ -29,6 +29,7 @@ import ( type Info struct { ID string `json:"server_id"` Version string `json:"version"` + GitHash string `json:"git_hash"` GoVersion string `json:"go"` Host string `json:"host"` Port int `json:"port"` @@ -112,6 +113,7 @@ func New(opts *Options) *Server { info := Info{ ID: genID(), Version: VERSION, + GitHash: GITHASH, GoVersion: runtime.Version(), Host: opts.Host, Port: opts.Port, @@ -241,6 +243,7 @@ func (s *Server) logPid() error { func (s *Server) Start() { s.Noticef("Starting nats-server version %s", VERSION) s.Debugf("Go build version %s", s.info.GoVersion) + s.Debugf("GIT hash [%s]", GITHASH) // Avoid RACE between Start() and Shutdown() s.mu.Lock()