From e1d4e6774cdadf694378518a94ae717950a060e3 Mon Sep 17 00:00:00 2001 From: MaysWind Date: Tue, 2 Feb 2021 23:02:21 +0800 Subject: [PATCH] add build time --- Dockerfile | 4 +++- lab.go | 21 ++----------------- pkg/version/version.go | 47 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 52 insertions(+), 20 deletions(-) create mode 100644 pkg/version/version.go diff --git a/Dockerfile b/Dockerfile index cad39610..cbf7928a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,10 +6,12 @@ RUN docker/backend-build-pre-setup.sh RUN apk add git gcc g++ libc-dev RUN VERSION=`grep '"version": ' package.json | awk -F ':' '{print $2}' | tr -d ' ' | tr -d ',' | tr -d '"'` \ && COMMIT_HASH=$(git rev-parse --short HEAD) \ + && BUILD_UNIXTIME="$(date '+%s')" \ + && VERSION_FLAGS="-X github.com/mayswind/lab/pkg/version.Version=${VERSION} -X github.com/mayswind/lab/pkg/version.CommitHash=${COMMIT_HASH} -X github.com/mayswind/lab/pkg/version.BuildUnixTime=${BUILD_UNIXTIME}" \ && GOOS=linux \ && GOARCH=amd64 \ && CGO_ENABLED=1 \ - && go build -a -v -i -trimpath -ldflags "-w -linkmode external -extldflags '-static' -X main.version=${VERSION} -X main.commitHash=${COMMIT_HASH}" -o lab lab.go + && go build -a -v -i -trimpath -ldflags "-w -linkmode external -extldflags '-static' ${VERSION_FLAGS}" -o lab lab.go RUN chmod +x lab # Build frontend files diff --git a/lab.go b/lab.go index 50b13ce6..588b144f 100644 --- a/lab.go +++ b/lab.go @@ -1,23 +1,20 @@ package main import ( - "fmt" "log" "os" "github.com/urfave/cli/v2" "github.com/mayswind/lab/cmd" + "github.com/mayswind/lab/pkg/version" ) -var version string -var commitHash string - func main() { app := &cli.App{ Name: "lab", Usage: "A lightweight account book app hosted by yourself.", - Version: getVersion(), + Version: version.GetFullVersion(), Commands: []*cli.Command{ cmd.WebServer, cmd.Database, @@ -37,17 +34,3 @@ func main() { log.Fatalf("Failed to run lab app with %s: %v", os.Args, err) } } - -func getVersion() string { - fullVersion := "Local Build" - - if version != "" { - fullVersion = version - } - - if commitHash != "" { - fullVersion = fmt.Sprintf("%s (%s)", fullVersion, commitHash) - } - - return fullVersion -} diff --git a/pkg/version/version.go b/pkg/version/version.go new file mode 100644 index 00000000..a3397c10 --- /dev/null +++ b/pkg/version/version.go @@ -0,0 +1,47 @@ +package version + +import ( + "fmt" + "strings" + + "github.com/mayswind/lab/pkg/utils" +) + +var ( + // Version holds the version of this execution program + Version string + + // CommitHash holds the git commit hash of this execution program's source code + CommitHash string + + // BuildUnixTime holds the time when starting building this execution program + BuildUnixTime string +) + +func GetFullVersion() string { + fullVersion := "Local Build" + + if Version != "" { + fullVersion = Version + } + + additionalInfos := make([]string, 0, 2) + + if CommitHash != "" { + additionalInfos = append(additionalInfos, "commit " + CommitHash) + } + + if BuildUnixTime != "" { + unixTime, err := utils.StringToInt64(BuildUnixTime) + + if unixTime > 0 && err == nil { + additionalInfos = append(additionalInfos, "build time " + utils.FormatToLongDateTime(utils.ParseFromUnixTime(unixTime))) + } + } + + if len(additionalInfos) > 0 { + fullVersion = fmt.Sprintf("%s (%s)", fullVersion, strings.Join(additionalInfos, ", ")) + } + + return fullVersion +}