Merge pull request #40 from coreos/inject-version-from-git-data
*: determine version from git
This commit is contained in:
commit
e58a3d24a4
4 changed files with 36 additions and 21 deletions
25
Makefile
25
Makefile
|
@ -1,33 +1,24 @@
|
|||
PROJ="poke"
|
||||
ORG_PATH="github.com/coreos"
|
||||
REPO_PATH="$(ORG_PATH)/$(PROJ)"
|
||||
PROJ=poke
|
||||
ORG_PATH=github.com/coreos
|
||||
REPO_PATH=$(ORG_PATH)/$(PROJ)
|
||||
export PATH := $(PWD)/bin:$(PATH)
|
||||
|
||||
export GOBIN=$(PWD)/bin
|
||||
export GO15VENDOREXPERIMENT=1
|
||||
export CGO_ENABLED:=0
|
||||
|
||||
LD_FLAGS="-w -X $(REPO_PATH)/version.Version=$(shell ./scripts/git-version)"
|
||||
|
||||
GOOS=$(shell go env GOOS)
|
||||
GOARCH=$(shell go env GOARCH)
|
||||
|
||||
COMMIT=$(shell git rev-parse HEAD)
|
||||
|
||||
# check if the current commit has a matching tag
|
||||
TAG=$(shell git describe --exact-match --abbrev=0 --tags $(COMMIT) 2> /dev/null || true)
|
||||
|
||||
ifeq ($(TAG),)
|
||||
VERSION=$(TAG)
|
||||
else
|
||||
VERSION=$(COMMIT)
|
||||
endif
|
||||
|
||||
|
||||
build: bin/poke bin/example-app
|
||||
|
||||
bin/poke: FORCE
|
||||
@go install $(REPO_PATH)/cmd/poke
|
||||
@go install -ldflags $(LD_FLAGS) $(REPO_PATH)/cmd/poke
|
||||
|
||||
bin/example-app: FORCE
|
||||
@go install $(REPO_PATH)/cmd/example-app
|
||||
@go install -ldflags $(LD_FLAGS) $(REPO_PATH)/cmd/example-app
|
||||
|
||||
test:
|
||||
@go test $(shell go list ./... | grep -v '/vendor/')
|
||||
|
|
|
@ -11,8 +11,11 @@ import (
|
|||
func commandVersion() *cobra.Command {
|
||||
return &cobra.Command{
|
||||
Use: "version",
|
||||
Short: "Print the version and exit",
|
||||
Run: func(cmd *cobra.Command, args []string) {
|
||||
fmt.Printf(`v%s %s %s %s
|
||||
fmt.Printf(`dex Version:%s
|
||||
Go Version: %s
|
||||
Go OS/ARCH: %s %s
|
||||
`, version.Version, runtime.Version(), runtime.GOOS, runtime.GOARCH)
|
||||
},
|
||||
}
|
||||
|
|
21
scripts/git-version
Executable file
21
scripts/git-version
Executable file
|
@ -0,0 +1,21 @@
|
|||
#!/bin/bash -e
|
||||
|
||||
# parse the current git commit hash
|
||||
COMMIT=`git rev-parse HEAD`
|
||||
|
||||
# check if the current commit has a matching tag
|
||||
TAG=$(git describe --exact-match --abbrev=0 --tags ${COMMIT} 2> /dev/null || true)
|
||||
|
||||
# use the matching tag as the version, if available
|
||||
if [ -z "$TAG" ]; then
|
||||
VERSION=$COMMIT
|
||||
else
|
||||
VERSION=$TAG
|
||||
fi
|
||||
|
||||
# check for changed files (not untracked files)
|
||||
if [ -n "$(git diff --shortstat 2> /dev/null | tail -n1)" ]; then
|
||||
VERSION="${VERSION}-dirty"
|
||||
fi
|
||||
|
||||
echo $VERSION
|
|
@ -1,5 +1,5 @@
|
|||
// Package version contains version information for this app.
|
||||
package version
|
||||
|
||||
// Version is the semantic version of the server.
|
||||
const Version = "0.1.0"
|
||||
// Version is set by the build scripts.
|
||||
var Version = "was not built properly"
|
||||
|
|
Reference in a new issue