Osxcompat 1 (#377)

* Added option BUILD_IN_DOCKER to build binarys in a docker container

* removed unnecessary deps

* locked docker image version for buildin
This commit is contained in:
Joakim Karlsson 2018-04-13 08:11:34 +02:00 committed by Murali Reddy
parent 28f10ff2a7
commit dd5d2faf36

View File

@ -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)
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 && \