forked from mystiq/dex
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"
|
PROJ=poke
|
||||||
ORG_PATH="github.com/coreos"
|
ORG_PATH=github.com/coreos
|
||||||
REPO_PATH="$(ORG_PATH)/$(PROJ)"
|
REPO_PATH=$(ORG_PATH)/$(PROJ)
|
||||||
export PATH := $(PWD)/bin:$(PATH)
|
export PATH := $(PWD)/bin:$(PATH)
|
||||||
|
|
||||||
export GOBIN=$(PWD)/bin
|
export GOBIN=$(PWD)/bin
|
||||||
export GO15VENDOREXPERIMENT=1
|
export GO15VENDOREXPERIMENT=1
|
||||||
|
export CGO_ENABLED:=0
|
||||||
|
|
||||||
|
LD_FLAGS="-w -X $(REPO_PATH)/version.Version=$(shell ./scripts/git-version)"
|
||||||
|
|
||||||
GOOS=$(shell go env GOOS)
|
GOOS=$(shell go env GOOS)
|
||||||
GOARCH=$(shell go env GOARCH)
|
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
|
build: bin/poke bin/example-app
|
||||||
|
|
||||||
bin/poke: FORCE
|
bin/poke: FORCE
|
||||||
@go install $(REPO_PATH)/cmd/poke
|
@go install -ldflags $(LD_FLAGS) $(REPO_PATH)/cmd/poke
|
||||||
|
|
||||||
bin/example-app: FORCE
|
bin/example-app: FORCE
|
||||||
@go install $(REPO_PATH)/cmd/example-app
|
@go install -ldflags $(LD_FLAGS) $(REPO_PATH)/cmd/example-app
|
||||||
|
|
||||||
test:
|
test:
|
||||||
@go test $(shell go list ./... | grep -v '/vendor/')
|
@go test $(shell go list ./... | grep -v '/vendor/')
|
||||||
|
|
|
@ -10,9 +10,12 @@ import (
|
||||||
|
|
||||||
func commandVersion() *cobra.Command {
|
func commandVersion() *cobra.Command {
|
||||||
return &cobra.Command{
|
return &cobra.Command{
|
||||||
Use: "version",
|
Use: "version",
|
||||||
|
Short: "Print the version and exit",
|
||||||
Run: func(cmd *cobra.Command, args []string) {
|
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)
|
`, 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 contains version information for this app.
|
||||||
package version
|
package version
|
||||||
|
|
||||||
// Version is the semantic version of the server.
|
// Version is set by the build scripts.
|
||||||
const Version = "0.1.0"
|
var Version = "was not built properly"
|
||||||
|
|
Loading…
Reference in a new issue