Golang 编译应用程序动态版本号

Golang 编译应用程序动态版本号

为了使我本地的代码每次编译都有一个特殊的标记,所以我我这里结合网上的几篇帖子,整理了结合 git 提交码,编译时间,编译程序名称,和编译版本等信息的相关介绍。

使用方法

首先创建一个小项目来做简单验证:

mkdir -p gotest/src

version/version.go
main/main.go
Makefile

使用方法:
1. 进入项目目录 cd /home/liujx/gotest/src
2. 执行 make
3. 执行 make install
4. 执行 ./app_2018030615 -v 即可查看相关编译标记

我的执行结果:

build name:     app_2018030614
build ver:      v1.1.1
build time:     2018-03-06 14:51:06
Commit_SHA1:    c45b99e56075e41cc57bc55544d805fbd19f945b

源代码参考

version.go 源代码:

package version

import (
    "os"
    . "fmt"
    "flag"
)

var (
    BuildVersion string
    BuildTime    string
    BuildName    string
    CommitID     string
)

func init() {

    var showVer bool

    flag.BoolVar( &showVer, "v", false, "show build version" )

    flag.Parse()

    if showVer{
        // Printf( "build name:\t%s\nbuild ver:\t%s\nbuild time:\t%s\nCommitID:%s\n", BuildName, BuildVersion, BuildTime, CommitID )
        Printf( "build name:\t%s\n", BuildName )
        Printf( "build ver:\t%s\n", BuildVersion )
        Printf( "build time:\t%s\n", BuildTime )
        Printf( "Commit ID:\t%s\n", CommitID )
        os.Exit( 0 )
    }
}

main.go 源代码:


package main

import (
    "fmt"
    _ "version"
)

func main(){
    fmt.( "我爱北京天安门" )
}

Makefile 源代码:

BUILD_VERSION   := v1.1.1
BUILD_TIME      := $(shell date "+%F %T")
BUILD_NAME      := app_$(shell date "+%Y%m%d%H" )
SOURCE          := ./src/main/main.go
TARGET_DIR      := /home/liujx/gotest_install/
COMMIT_SHA1     := $(shell git rev-parse HEAD )

all:
    # CGO_ENABLED=0 GOOS=linux GOARCH=amd64
    go build -ldflags                           \
    "                                           \
    -X 'version.BuildVersion=${BUILD_VERSION}'     \
    -X 'version.BuildTime=${BUILD_TIME}'       \
    -X 'version.BuildName=${BUILD_NAME}'       \
    -X 'version.CommitID=${COMMIT_SHA1}'       \
    "                                           \
    -o ${BUILD_NAME} ${SOURCE}

clean:
    rm ${BUILD_NAME} -f

install:
    mkdir -p ${TARGET_DIR}
    cp ${BUILD_NAME} ${TARGET_DIR} -f

.PHONY : all clean install ${BUILD_NAME}
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值