From 05d944e7a35c714f48ece7aa20c2a8ea154b6ad8 Mon Sep 17 00:00:00 2001 From: Joakim Karlsson Date: Mon, 9 Apr 2018 17:55:54 +0200 Subject: [PATCH 1/3] Added option BUILD_IN_DOCKER to build binarys in a docker container --- Makefile | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index a99a248831..97ccee0f19 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,10 @@ 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 ifeq ($(GOARCH), arm) QEMU_ARCH=arm ARCH_TAG_PREFIX=$(GOARCH) @@ -34,12 +35,26 @@ $(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 golang:alpine \ + sh -c ' \ + apk add -U git build-base linux-headers \ + && 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 golang:alpine \ + 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) From 39fdec344db420cee770b62f7b897b7999fe4668 Mon Sep 17 00:00:00 2001 From: Joakim Karlsson Date: Mon, 9 Apr 2018 18:10:15 +0200 Subject: [PATCH 2/3] removed unnecessary deps --- Makefile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 97ccee0f19..90394c95ef 100644 --- a/Makefile +++ b/Makefile @@ -39,8 +39,7 @@ ifeq "$(BUILD_IN_DOCKER)" "true" @echo Starting kube-router binary build. $(DOCKER) run -v $(PWD):/go/src/github.com/cloudnativelabs/kube-router -w /go/src/github.com/cloudnativelabs/kube-router golang:alpine \ sh -c ' \ - apk add -U git build-base linux-headers \ - && GOARCH=$(GOARCH) CGO_ENABLED=0 go 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' @echo Finished kube-router binary build. From c8ac830412f17e0d849756458db9b90efcd65c09 Mon Sep 17 00:00:00 2001 From: Joakim Karlsson Date: Thu, 12 Apr 2018 14:07:05 +0200 Subject: [PATCH 3/3] locked docker image version for buildin --- Makefile | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 90394c95ef..c2ccfb9ece 100644 --- a/Makefile +++ b/Makefile @@ -17,6 +17,7 @@ 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) @@ -37,7 +38,7 @@ all: test kube-router container ## Default target. Runs tests, builds binaries a kube-router: ifeq "$(BUILD_IN_DOCKER)" "true" @echo Starting kube-router binary build. - $(DOCKER) run -v $(PWD):/go/src/github.com/cloudnativelabs/kube-router -w /go/src/github.com/cloudnativelabs/kube-router golang:alpine \ + $(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)" \ @@ -49,7 +50,7 @@ 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 golang:alpine \ + $(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/ @@ -188,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 && \