diff --git a/Makefile b/Makefile index a99a2488..c2ccfb9e 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,8 @@ NAME?=kube-router GOARCH?=amd64 DEV_SUFFIX?=-git -BUILD_DATE?=$(shell date --iso-8601) +OSX=$(filter Darwin,$(shell uname)) +BUILD_DATE?=$(shell date +%Y-%m-%dT%H:%M:%S%z) LOCAL_PACKAGES?=app app/controllers app/options app/watchers utils IMG_NAMESPACE?=cloudnativelabs GIT_COMMIT=$(shell git describe --tags --dirty) @@ -12,10 +13,11 @@ REGISTRY?=$(if $(IMG_FQDN),$(IMG_FQDN)/$(IMG_NAMESPACE)/$(NAME),$(IMG_NAMESPACE) REGISTRY_DEV?=$(REGISTRY)$(DEV_SUFFIX) IN_DOCKER_GROUP=$(filter docker,$(shell groups)) IS_ROOT=$(filter 0,$(shell id -u)) -DOCKER=$(if $(or $(IN_DOCKER_GROUP),$(IS_ROOT)),docker,sudo docker) +DOCKER=$(if $(or $(IN_DOCKER_GROUP),$(IS_ROOT),$(OSX)),docker,sudo docker) MAKEFILE_DIR=$(dir $(realpath $(firstword $(MAKEFILE_LIST)))) UPSTREAM_IMPORT_PATH=$(GOPATH)/src/github.com/cloudnativelabs/kube-router/ - +BUILD_IN_DOCKER?=false +DOCKER_BUILD_IMAGE?=golang:1.8.7-alpine ifeq ($(GOARCH), arm) QEMU_ARCH=arm ARCH_TAG_PREFIX=$(GOARCH) @@ -34,12 +36,25 @@ $(info Building for GOARCH=$(GOARCH)) all: test kube-router container ## Default target. Runs tests, builds binaries and images. kube-router: +ifeq "$(BUILD_IN_DOCKER)" "true" @echo Starting kube-router binary build. - GOARCH=$(GOARCH) CGO_ENABLED=0 go build -ldflags '-X github.com/cloudnativelabs/kube-router/app.version=$(GIT_COMMIT) -X github.com/cloudnativelabs/kube-router/app.buildDate=$(BUILD_DATE)' -o kube-router kube-router.go + $(DOCKER) run -v $(PWD):/go/src/github.com/cloudnativelabs/kube-router -w /go/src/github.com/cloudnativelabs/kube-router $(DOCKER_BUILD_IMAGE) \ + sh -c ' \ + GOARCH=$(GOARCH) CGO_ENABLED=0 go build \ + -ldflags "-X github.com/cloudnativelabs/kube-router/app.version=$(GIT_COMMIT) -X github.com/cloudnativelabs/kube-router/app.buildDate=$(BUILD_DATE)" \ + -o kube-router kube-router.go' @echo Finished kube-router binary build. +else + GOARCH=$(GOARCH) CGO_ENABLED=0 go build -ldflags '-X github.com/cloudnativelabs/kube-router/app.version=$(GIT_COMMIT) -X github.com/cloudnativelabs/kube-router/app.buildDate=$(BUILD_DATE)' -o kube-router kube-router.go +endif test: gofmt gomoqs ## Runs code quality pipelines (gofmt, tests, coverage, lint, etc) - go test github.com/cloudnativelabs/kube-router github.com/cloudnativelabs/kube-router/app/... github.com/cloudnativelabs/kube-router/utils/ +ifeq "$(BUILD_IN_DOCKER)" "true" + $(DOCKER) run -v $(PWD):/go/src/github.com/cloudnativelabs/kube-router -w /go/src/github.com/cloudnativelabs/kube-router $(DOCKER_BUILD_IMAGE) \ + sh -c 'go test github.com/cloudnativelabs/kube-router github.com/cloudnativelabs/kube-router/app/... github.com/cloudnativelabs/kube-router/utils/' +else + go test github.com/cloudnativelabs/kube-router github.com/cloudnativelabs/kube-router/app/... github.com/cloudnativelabs/kube-router/utils/ +endif vagrant-up: export docker=$(DOCKER) vagrant-up: export DEV_IMG=$(REGISTRY_DEV):$(IMG_TAG) @@ -174,7 +189,7 @@ else endif gobgp: vendor/github.com/osrg/gobgp/gobgp - $(DOCKER) run -v $(PWD):/pwd golang:alpine \ + $(DOCKER) run -v $(PWD):/pwd $(DOCKER_BUILD_IMAGE) \ sh -c ' \ apk add -U git && \ ln -s /pwd/vendor /go/src && \