瀏覽代碼

feat: 通过git tag生成版本信息 (#28)

jeessy2 3 年之前
父節點
當前提交
9e83c8c2c1
共有 6 個文件被更改,包括 21 次插入5 次删除
  1. 2 0
      .goreleaser.yml
  2. 1 1
      Dockerfile
  3. 2 2
      Makefile
  4. 5 0
      main.go
  5. 10 2
      web/writing.go
  6. 1 0
      web/writing.html

+ 2 - 0
.goreleaser.yml

@@ -18,6 +18,8 @@ builds:
       - amd64
       - arm
       - arm64
+    ldflags:
+      - -s -w -X main.version={{.Tag}} -X main.buildTime={{.Date}}
 archives:
   - replacements:
       darwin: Darwin

+ 1 - 1
Dockerfile

@@ -5,7 +5,7 @@ WORKDIR /app
 COPY . .
 RUN go env -w GO111MODULE=on \
     && go env -w GOPROXY=https://goproxy.cn,direct \
-    && make clean build
+    && make clean test build
 
 # final stage
 FROM debian:stable-slim

+ 2 - 2
Makefile

@@ -1,6 +1,6 @@
 .PHONY: build clean test test-race
 
-VERSION=v2.0.0
+VERSION=$(shell git describe --tags `git rev-list --tags --max-count=1`)
 BIN=backup-x
 DIR_SRC=.
 DOCKER_CMD=docker
@@ -14,7 +14,7 @@ GOPATH=$(shell `which go` env GOPATH)
 build: $(DIR_SRC)/main.go
 	@$(GO) build $(GO_FLAGS) -o $(BIN) $(DIR_SRC)
 
-build_image:
+build_docker_image:
 	@$(DOCKER_CMD) build -f ./Dockerfile -t backup-x:$(VERSION) .
 
 test:

+ 5 - 0
main.go

@@ -34,12 +34,17 @@ var staticEmbededFiles embed.FS
 //go:embed favicon.ico
 var faviconEmbededFile embed.FS
 
+// version
+var version = "DEV"
+
 func main() {
 	flag.Parse()
 	if _, err := net.ResolveTCPAddr("tcp", *listen); err != nil {
 		log.Fatalf("解析监听地址异常,%s", err)
 	}
 
+	os.Setenv(web.VersionEnv, version)
+
 	switch *serviceType {
 	case "install":
 		installService()

+ 10 - 2
web/writing.go

@@ -6,11 +6,19 @@ import (
 	"html/template"
 	"log"
 	"net/http"
+	"os"
 )
 
 //go:embed writing.html
 var writingEmbedFile embed.FS
 
+const VersionEnv = "BACKUP_X_VERSION"
+
+type writtingData struct {
+	entity.Config
+	Version string
+}
+
 // WritingConfig 填写配置信息
 func WritingConfig(writer http.ResponseWriter, request *http.Request) {
 	tmpl, err := template.ParseFS(writingEmbedFile, "writing.html")
@@ -21,7 +29,7 @@ func WritingConfig(writer http.ResponseWriter, request *http.Request) {
 
 	conf, err := entity.GetConfigCache()
 	if err == nil {
-		tmpl.Execute(writer, conf)
+		tmpl.Execute(writer, &writtingData{Config: conf, Version: os.Getenv(VersionEnv)})
 		return
 	}
 
@@ -35,5 +43,5 @@ func WritingConfig(writer http.ResponseWriter, request *http.Request) {
 		BackupConfig: backupConf,
 	}
 
-	tmpl.Execute(writer, conf)
+	tmpl.Execute(writer, &writtingData{Config: conf, Version: os.Getenv(VersionEnv)})
 }

+ 1 - 0
web/writing.html

@@ -20,6 +20,7 @@
         <a href="/" class="navbar-brand d-flex align-items-center">
           <strong>backup-x</strong>
         </a>
+        <span class="badge badge-secondary">{{.Version}}</span>
       </div>
     </div>
   </header>