Merge pull request #40 from coreos/inject-version-from-git-data
*: determine version from git
This commit is contained in:
		
							
								
								
									
										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" | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user