Kubernetes
Kubernetes
1package main
2
3import (
4 "fmt"
5)
6
7var (
8 AppName string // 应用名称
9 AppVersion string // 应用版本
10 BuildVersion string // 编译版本
11 BuildTime string // 编译时间
12 GitRevision string // Git版本
13 GitBranch string // Git分支
14 GoVersion string // Golang信息
15)
16
17
18func main() {
19 Version()
20 // 你的业务代码入口
21}
22
23// Version 版本信息
24func Version() {
25 fmt.Printf("App Name:\t%s\n", AppName)
26 fmt.Printf("App Version:\t%s\n", AppVersion)
27 fmt.Printf("Build version:\t%s\n", BuildVersion)
28 fmt.Printf("Build time:\t%s\n", BuildTime)
29 fmt.Printf("Git revision:\t%s\n", GitRevision)
30 fmt.Printf("Git branch:\t%s\n", GitBranch)
31 fmt.Printf("Golang Version: %s\n", GoVersion)
32}
build编译构建脚本build.sh
1#!/bin/bash
2
3set -e
4
5PROJECT_NAME="app-api"
6BINARY="app-api"
7
8OUTPUT_DIR=output
9GOOS=$(go env GOOS)
10
11APP_NAME=${PROJECT_NAME}
12APP_VERSION=$(git log -1 --oneline)
13BUILD_VERSION=$(git log -1 --oneline)
14BUILD_TIME=$(date "+%FT%T%z")
15GIT_REVISION=$(git rev-parse --short HEAD)
16GIT_BRANCH=$(git name-rev --name-only HEAD)
17GO_VERSION=$(go version)
18
19CGO_ENABLED=0 go build -a -installsuffix cgo -v -mod=vendor \
20-ldflags "-s -X 'main.AppName=${APP_NAME}' \
21 -X 'main.AppVersion=${APP_VERSION}' \
22 -X 'main.BuildVersion=${BUILD_VERSION}' \
23 -X 'main.BuildTime=${BUILD_TIME}' \
24 -X 'main.GitRevision=${GIT_REVISION}' \
25 -X 'main.GitBranch=${GIT_BRANCH}' \
26 -X 'main.GoVersion=${GO_VERSION}'" \
27-o ${OUTPUT_DIR}/${BINARY} cmd/${BINARY}.go
本质上是用 -ldflags 参数注入了的外部参数到go的变量当中go的更多build参数帮助可以通过 go help build获取