Мне нужно указать номер версии в выводе, сгенерированном приложением Go. Для выпусков и локальных сборок я использую Makefile, который имеет:
...
VERSION = $(shell git describe --tags)
VER = $(shell git describe --tags --abbrev=0)
DATE = $(shell date -u '+%Y-%m-%d_%H:%M:%S%Z')
...
FLAGS_LD=-ldflags "-X path/to/myapp/mypkg.Build=${DATE} \
-X path/to/myapp/mypkg.Version=${VERSION}"
...
GOCMD = go
GOBUILD = $(GOCMD) build $(FLAGS_LD)
GOINSTALL = $(GOCMD) install $(FLAGS_LD)
...
И в пакете у меня есть переменные как
package mypkg
var (
Version = "v0.11.0-dev"
Build string
)
Все хорошо, когда я запускаю сборку, установку или выпуск через make , но если я запускаю go get path/to/myapp
, то -ldflags
будут пустыми, и пользователь получит устаревшую информацию о версии, а не информацию о сборке.
Есть ли способ получить правильные данные ldflags при установке программы с go get
?