From ce7d1f02b70585b75c4ebc12a81fce168fe54011 Mon Sep 17 00:00:00 2001 From: MaysWind Date: Tue, 12 Jan 2021 00:49:19 +0800 Subject: [PATCH] make the app version in backend parsing from package.json and git revision --- Dockerfile | 9 +++++++-- lab.go | 20 ++++++++++++++++++-- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 3dbf676e..1f0a7225 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,9 +1,14 @@ # Build backend binary file FROM golang:1.14.10-alpine3.12 AS be-builder -RUN apk add gcc g++ libc-dev +RUN apk add git gcc g++ libc-dev WORKDIR /go/src/github.com/mayswind/lab COPY . . -RUN GOOS=linux GOARCH=amd64 CGO_ENABLED=1 go build -a -v -i -trimpath -o lab lab.go +RUN VERSION=`grep '"version": ' package.json | awk -F ':' '{print $2}' | tr -d ' ' | tr -d ',' | tr -d '"'` \ + && COMMIT_HASH=$(git rev-parse --short HEAD) \ + && GOOS=linux \ + && GOARCH=amd64 \ + && CGO_ENABLED=1 \ + && go build -a -v -i -trimpath -ldflags "-X main.version=${VERSION} -X main.commitHash=${COMMIT_HASH}" -o lab lab.go RUN chmod +x lab # Build frontend files diff --git a/lab.go b/lab.go index c66c6aa4..9e24761d 100644 --- a/lab.go +++ b/lab.go @@ -1,6 +1,7 @@ package main import ( + "fmt" "log" "os" @@ -9,13 +10,14 @@ import ( "github.com/mayswind/lab/cmd" ) -const labVersion = "0.1.0" +var version string +var commitHash string func main() { app := &cli.App{ Name: "lab", Usage: "A lightweight account book app hosted by yourself.", - Version: labVersion, + Version: getVersion(), Commands: []*cli.Command{ cmd.WebServer, cmd.Database, @@ -34,3 +36,17 @@ 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 +}