Report version in registry binary

We've added support to the registry command to report the current version of
the distribution package. The version package is generated with a shell script
that gets the latest tag and add "+unknown". This allows builds from "go get"
and "go install" to have a rough version number. Generated periodically, it
will provide a decent indication of what code built the binary. For more
accurate versioning, one can build with the "binaries" make target. Linker
flags are used to replace the version string with the actual current tag at
build time.

Signed-off-by: Stephen J Day <stephen.day@docker.com>
This commit is contained in:
Stephen J Day 2015-01-29 15:32:49 -08:00
parent c4406baf8a
commit d0abfe0b92
5 changed files with 70 additions and 6 deletions

View file

@ -1,15 +1,26 @@
# This project makefile is around for generating peices of documentation and
# code. For most purposes, running it is not necessary.
# Set an output prefix, which is the local directory if not specified
PREFIX?=$(shell pwd)
.PHONY: clean
# Used to populate version variable in main package.
GO_LDFLAGS=-ldflags "-X `go list ./version`.Version `git describe --match 'v[0-9]*' --dirty='.m' --always`"
.PHONY: clean binaries
.DEFAULT: default
default:
@echo Please read the make targets before using this Makefile. It is \
currently only used for documentation and autogenerated files.
@echo Please read the make targets before using this Makefile.
AUTHORS: .mailmap .git/ORIG_HEAD .git/FETCH_HEAD .git/HEAD
git log --format='%aN <%aE>' | sort -fu >> $@
# This only needs to be generated by hand when cutting full releases.
version/version.go:
./version/version.sh > $@
${PREFIX}/bin/registry: version/version.go $(shell find . -type f -name '*.go')
go build -o $@ ${GO_LDFLAGS} ./cmd/registry
binaries: ${PREFIX}/bin/registry
clean:
rm -rf AUTHORS
rm -rf ${PREFIX}/bin/registry