Add BuildDate to version structure

Signed-off-by: Mark Anderson <manderson@hashicorp.com>
This commit is contained in:
Mark Anderson 2022-03-18 09:55:12 -07:00
parent 915f1089f0
commit b35e749305
3 changed files with 15 additions and 1 deletions

View File

@ -25,7 +25,9 @@ GIT_COMMIT?=$(shell git rev-parse --short HEAD)
GIT_COMMIT_YEAR?=$(shell git show -s --format=%cd --date=format:%Y HEAD) GIT_COMMIT_YEAR?=$(shell git show -s --format=%cd --date=format:%Y HEAD)
GIT_DIRTY?=$(shell test -n "`git status --porcelain`" && echo "+CHANGES" || true) GIT_DIRTY?=$(shell test -n "`git status --porcelain`" && echo "+CHANGES" || true)
GIT_IMPORT=github.com/hashicorp/consul/version GIT_IMPORT=github.com/hashicorp/consul/version
GOLDFLAGS=-X $(GIT_IMPORT).GitCommit=$(GIT_COMMIT)$(GIT_DIRTY) DATE_FORMAT="%Y-%m-%dT%H:%M:%SZ" # it's tricky to do an RFC3339 format in a cross platform way, so we hardcode UTC
GIT_DATE=$(shell git show -s --format=%cd --date=format:"$(DATE_FORMAT)" HEAD) # we're using this for build date because it's stable across platform builds
GOLDFLAGS=-X $(GIT_IMPORT).GitCommit=$(GIT_COMMIT)$(GIT_DIRTY) -X $(GIT_IMPORT).BuildDate=$(GIT_DATE)
ifeq ($(FORCE_REBUILD),1) ifeq ($(FORCE_REBUILD),1)
NOCACHE=--no-cache NOCACHE=--no-cache

View File

@ -27,12 +27,19 @@ import (
) )
func New(ui cli.Ui) *cmd { func New(ui cli.Ui) *cmd {
buildDate, err := time.Parse(time.RFC3339, consulversion.BuildDate)
if err != nil {
ui.Error(fmt.Sprintf("Fatal error with internal time set; check makefile for build date %v %v \n", buildDate, err))
return nil
}
c := &cmd{ c := &cmd{
ui: ui, ui: ui,
revision: consulversion.GitCommit, revision: consulversion.GitCommit,
version: consulversion.Version, version: consulversion.Version,
versionPrerelease: consulversion.VersionPrerelease, versionPrerelease: consulversion.VersionPrerelease,
versionHuman: consulversion.GetHumanVersion(), versionHuman: consulversion.GetHumanVersion(),
buildDate: buildDate,
flags: flag.NewFlagSet("", flag.ContinueOnError), flags: flag.NewFlagSet("", flag.ContinueOnError),
} }
config.AddFlags(c.flags, &c.configLoadOpts) config.AddFlags(c.flags, &c.configLoadOpts)
@ -53,6 +60,7 @@ type cmd struct {
version string version string
versionPrerelease string versionPrerelease string
versionHuman string versionHuman string
buildDate time.Time
configLoadOpts config.LoadOpts configLoadOpts config.LoadOpts
logger hclog.InterceptLogger logger hclog.InterceptLogger
} }
@ -194,6 +202,7 @@ func (c *cmd) run(args []string) int {
segment = "<all>" segment = "<all>"
} }
ui.Info(fmt.Sprintf(" Version: '%s'", c.versionHuman)) ui.Info(fmt.Sprintf(" Version: '%s'", c.versionHuman))
ui.Info(fmt.Sprintf(" Build Date: %s", c.buildDate))
ui.Info(fmt.Sprintf(" Node ID: '%s'", config.NodeID)) ui.Info(fmt.Sprintf(" Node ID: '%s'", config.NodeID))
ui.Info(fmt.Sprintf(" Node name: '%s'", config.NodeName)) ui.Info(fmt.Sprintf(" Node name: '%s'", config.NodeName))
if ap := config.PartitionOrEmpty(); ap != "" { if ap := config.PartitionOrEmpty(); ap != "" {

View File

@ -23,6 +23,9 @@ var (
// then it means that it is a final release. Otherwise, this is a pre-release // then it means that it is a final release. Otherwise, this is a pre-release
// such as "dev" (in development), "beta", "rc1", etc. // such as "dev" (in development), "beta", "rc1", etc.
VersionPrerelease = "dev" VersionPrerelease = "dev"
// The date/time of the build
BuildDate string
) )
// GetHumanVersion composes the parts of the version in a way that's suitable // GetHumanVersion composes the parts of the version in a way that's suitable