@@ -3,7 +3,6 @@ GOARCH?=$(shell go env GOARCH)
33DEV_SUFFIX? =-git
44OSX =$(filter Darwin,$(shell uname) )
55BUILD_DATE? =$(shell date +% Y-% m-% dT% H:% M:% S% z)
6- LOCAL_PACKAGES? =app app/controllers app/options app/watchers utils
76IMG_NAMESPACE? =cloudnativelabs
87GIT_COMMIT =$(shell git describe --tags --dirty)
98GIT_BRANCH? =$(shell git rev-parse --abbrev-ref HEAD)
@@ -18,81 +17,86 @@ DOCKER=$(if $(or $(IN_DOCKER_GROUP),$(IS_ROOT),$(OSX)),docker,sudo docker)
1817MAKEFILE_DIR =$(dir $(realpath $(firstword $(MAKEFILE_LIST ) ) ) )
1918UPSTREAM_IMPORT_PATH =$(GOPATH ) /src/github.com/cloudnativelabs/kube-router/
2019BUILD_IN_DOCKER? =true
21- DOCKER_BUILD_IMAGE? =golang:1.16.3 -alpine3.12
20+ DOCKER_BUILD_IMAGE? =golang:1.16.4 -alpine3.12
2221DOCKER_LINT_IMAGE? =golangci/golangci-lint:v1.27.0
23- GOBGP_VERSION =v0.0.0-20210402043138-915bfc2d8189 # v2.26 .0
22+ GOBGP_VERSION =v0.0.0-20210503121111-d1a8400dc698 # v2.27 .0
2423QEMU_IMAGE?=multiarch/qemu-user-static
24+ GORELEASER_VERSION =v0.162.1
25+ MOQ_VERSION =v0.2.1
2526ifeq ($(GOARCH ) , arm)
2627ARCH_TAG_PREFIX =$(GOARCH )
2728FILE_ARCH =ARM
28- DOCKERFILE_SED_EXPR? =s,FROM alpine,FROM arm32v6/alpine,
29+ DOCKER_ARCH = arm32v6/
2930else ifeq ($(GOARCH), arm64)
3031ARCH_TAG_PREFIX =$(GOARCH )
3132FILE_ARCH =ARM aarch64
32- DOCKERFILE_SED_EXPR? =s,FROM alpine,FROM arm64v8/alpine,
33+ DOCKER_ARCH = arm64v8/
3334else ifeq ($(GOARCH), s390x)
3435ARCH_TAG_PREFIX =$(GOARCH )
3536FILE_ARCH =IBM S/390
36- DOCKERFILE_SED_EXPR? =s,FROM alpine,FROM s390x/alpine,
37+ DOCKER_ARCH = s390x/
3738else ifeq ($(GOARCH), ppc64le)
3839ARCH_TAG_PREFIX =$(GOARCH )
3940FILE_ARCH =64-bit PowerPC
40- DOCKERFILE_SED_EXPR? =s,FROM alpine,FROM ppc64le/alpine,
41+ DOCKER_ARCH = ppc64le/
4142else
4243ARCH_TAG_PREFIX =amd64
43- DOCKERFILE_SED_EXPR? =
4444FILE_ARCH =x86-64
45+ DOCKER_ARCH =
4546endif
4647$(info Building for GOARCH=$(GOARCH))
4748all : test kube-router container # # Default target. Runs tests, builds binaries and images.
4849
4950kube-router :
50- ifeq "$(BUILD_IN_DOCKER ) " "true"
5151 @echo Starting kube-router binary build.
52+ ifeq "$(BUILD_IN_DOCKER ) " "true"
5253 $(DOCKER) run -v $(PWD):/go/src/github.com/cloudnativelabs/kube-router -w /go/src/github.com/cloudnativelabs/kube-router $(DOCKER_BUILD_IMAGE) \
53- sh -c ' \
54- GOARCH=$(GOARCH) CGO_ENABLED=0 go build \
55- -ldflags "-X github.com/cloudnativelabs/kube-router/pkg/version.Version=$(GIT_COMMIT) -X github.com/cloudnativelabs/kube-router/pkg/version.BuildDate=$(BUILD_DATE)" \
56- -o kube-router cmd/kube-router/kube-router.go'
57- @echo Finished kube-router binary build.
54+ sh -c \
55+ 'GOARCH=$(GOARCH) CGO_ENABLED=0 go build \
56+ -ldflags "-X github.com/cloudnativelabs/kube-router/pkg/version.Version=$(GIT_COMMIT) -X github.com/cloudnativelabs/kube-router/pkg/version.BuildDate=$(BUILD_DATE)" \
57+ -o kube-router cmd/kube-router/kube-router.go'
5858else
59- GOARCH=$(GOARCH) CGO_ENABLED=0 go build -ldflags '-X github.com/cloudnativelabs/kube-router/pkg/cmd.version=$(GIT_COMMIT) -X github.com/cloudnativelabs/kube-router/pkg/cmd.buildDate=$(BUILD_DATE)' -o kube-router cmd/kube-router/kube-router.go
59+ GOARCH=$(GOARCH) CGO_ENABLED=0 go build \
60+ -ldflags "-X github.com/cloudnativelabs/kube-router/pkg/version.Version=$(GIT_COMMIT) -X github.com/cloudnativelabs/kube-router/pkg/version.BuildDate=$(BUILD_DATE)" \
61+ -o kube-router cmd/kube-router/kube-router.go
62+
6063endif
64+ @echo Finished kube-router binary build.
6165
6266test : gofmt # # Runs code quality pipelines (gofmt, tests, coverage, etc)
6367ifeq "$(BUILD_IN_DOCKER ) " "true"
6468 $(DOCKER) run -v $(PWD):/go/src/github.com/cloudnativelabs/kube-router -w /go/src/github.com/cloudnativelabs/kube-router $(DOCKER_BUILD_IMAGE) \
65- sh -c 'CGO_ENABLED=0 go test -v -timeout 30s github.com/cloudnativelabs/kube-router/cmd/kube-router/ github.com/cloudnativelabs/kube-router/pkg/...'
69+ sh -c \
70+ 'CGO_ENABLED=0 go test -v -timeout 30s github.com/cloudnativelabs/kube-router/cmd/kube-router/ github.com/cloudnativelabs/kube-router/pkg/...'
71+
6672else
67- go test -v -timeout 30s github.com/cloudnativelabs/kube-router/cmd/kube-router/ github.com/cloudnativelabs/kube-router/pkg/...
73+ go test -v -timeout 30s github.com/cloudnativelabs/kube-router/cmd/kube-router/ github.com/cloudnativelabs/kube-router/pkg/...
6874endif
6975
7076lint : gofmt
7177ifeq "$(BUILD_IN_DOCKER ) " "true"
7278 $(DOCKER) run -v $(PWD):/go/src/github.com/cloudnativelabs/kube-router -w /go/src/github.com/cloudnativelabs/kube-router $(DOCKER_LINT_IMAGE) \
73- sh -c 'golangci-lint run ./...'
79+ sh -c \
80+ 'golangci-lint run ./...'
7481else
7582 golangci-lint run ./...
7683endif
7784
7885run : kube-router # # Runs "kube-router --help".
7986 ./kube-router --help
8087
81- container : Dockerfile. $( GOARCH ) .run kube-router gobgp multiarch-binverify # # Builds a Docker container image.
88+ container : kube-router gobgp multiarch-binverify # # Builds a Docker container image.
8289 @echo Starting kube-router container image build for $(GOARCH ) on $(shell go env GOHOSTARCH)
8390 @if [ " $( GOARCH) " != " $( shell go env GOHOSTARCH) " ]; then \
8491 echo " Using qemu to build non-native container" ; \
8592 $(DOCKER ) run --rm --privileged $(QEMU_IMAGE ) --reset -p yes; \
8693 fi
87- $(DOCKER ) build -t " $( REGISTRY_DEV) :$( subst /,,$( IMG_TAG) ) " -f Dockerfile. $( GOARCH ) .run .
94+ $(DOCKER ) build -t " $( REGISTRY_DEV) :$( subst /,,$( IMG_TAG) ) " -f Dockerfile --build-arg ARCH= " $( DOCKER_ARCH ) " .
8895 @if [ " $( GIT_BRANCH) " = " master" ]; then \
8996 $(DOCKER ) tag " $( REGISTRY_DEV) :$( IMG_TAG) " " $( REGISTRY_DEV) " ; \
9097 fi
9198 @echo Finished kube-router container image build.
9299
93- Dockerfile.$(GOARCH ) .run : Dockerfile Makefile
94- @sed -e " $( DOCKERFILE_SED_EXPR) " Dockerfile > $(@ )
95-
96100docker-login : # # Logs into a docker registry using {DOCKER,QUAY}_{USERNAME,PASSWORD} variables.
97101 @echo Starting docker login target.
98102 @if [ -n " $( DOCKER_USERNAME) " ] && [ -n " $( DOCKER_PASSWORD) " ]; then \
@@ -143,7 +147,7 @@ github-release:
143147 @echo Starting kube-router GitHub release creation.
144148 @[ -n " $( value GITHUB_TOKEN) " ] && \
145149 GITHUB_TOKEN=$(value GITHUB_TOKEN) ; \
146- curl -sL https://git.io/goreleaser | VERSION=v0.142.0 bash
150+ curl -sL https://git.io/goreleaser | VERSION=$( GORELEASER_VERSION ) bash
147151 @echo Finished kube-router GitHub release creation.
148152
149153release : push-release github-release # # Pushes a release to DockerHub and GitHub
@@ -152,15 +156,14 @@ release: push-release github-release ## Pushes a release to DockerHub and GitHub
152156clean : # # Removes the kube-router binary and Docker images
153157 rm -f kube-router
154158 rm -f gobgp
155- rm -f Dockerfile.$(GOARCH ) .run
156159 if [ $( shell $( DOCKER) images -q $( REGISTRY_DEV) :$( IMG_TAG) 2> /dev/null) ]; then \
157160 $(DOCKER ) rmi $(REGISTRY_DEV ) :$(IMG_TAG ) ; \
158161 fi
159162gofmt : # # Tells you what files need to be gofmt'd.
160- @build/verify-gofmt.sh
163+ gofmt -l -s $( shell find . -not \( \( -wholename ' * /vendor/ * ' \) -prune \) -name ' *.go ' )
161164
162165gofmt-fix : # # Fixes files that need to be gofmt'd.
163- gofmt -s -w $(LOCAL_PACKAGES )
166+ gofmt -s -w $(shell find . -not \( \( -wholename ' * /vendor/ * ' \) -prune \) -name ' *.go ' )
164167
165168# List of all file_moq.go files which would need to be regenerated
166169# from file.go if changed
@@ -171,7 +174,7 @@ gomoqs: ./pkg/controllers/proxy/network_services_controller_moq.go
171174% _moq.go : % .go
172175ifeq "$(BUILD_IN_DOCKER ) " "true"
173176 $(DOCKER) run -v $(PWD):/go/src/github.com/cloudnativelabs/kube-router -w /go/src/github.com/cloudnativelabs/kube-router $(DOCKER_BUILD_IMAGE) \
174- sh -c 'apk add --no-cache git build-base && go get github.com/matryer/moq && go generate -v $(*).go'
177+ sh -c 'go install github.com/matryer/moq@$(MOQ_VERSION) && go generate -v $(*).go'
175178else
176179 @test -x $(lastword $(subst :, ,$(GOPATH)))/bin/moq && exit 0; echo "ERROR: 'moq' tool is needed to update mock test files, install it with: \ngo get github.com/matryer/moq\n"; exit 1
177180 go generate -v $(*).go
@@ -214,14 +217,15 @@ else
214217endif
215218
216219gobgp :
217- ifeq "$(BUILD_IN_DOCKER ) " "true"
218220 @echo Building gobgp
221+ ifeq "$(BUILD_IN_DOCKER ) " "true"
219222 $(DOCKER) run -v $(PWD):/go/src/github.com/cloudnativelabs/kube-router -w /go/src/github.com/cloudnativelabs/kube-router $(DOCKER_BUILD_IMAGE) \
220- sh -c 'apk --no-cache add git && GOARCH=$(GOARCH) CGO_ENABLED=0 go install github.com/osrg/gobgp/cmd/gobgp@$(GOBGP_VERSION) && if [[ ${GOARCH} != $$(go env GOHOSTARCH) ]]; then PREFIX=linux_${GOARCH}; fi && cp $$(go env GOPATH)/bin/$${PREFIX}/gobgp .'
221- @echo Finished building gobgp.
223+ sh -c \
224+ 'CGO_ENABLED=0 GOARCH=$(GOARCH) GOOS=linux go install github.com/osrg/gobgp/cmd/gobgp@$(GOBGP_VERSION) && if [ ${GOARCH} != $$(go env GOHOSTARCH) ]; then PREFIX=linux_${GOARCH}; fi && cp $$(go env GOPATH)/bin/$${PREFIX}/ gobgp .'
222225else
223- CGO_ENABLED=0 GOARCH=$(GOARCH) GOOS=linux go install github.com/osrg/gobgp/cmd/gobgp@$(GOBGP_VERSION) && if [[ ${GOARCH} != $$(go env GOHOSTARCH) ] ]; then PREFIX=linux_${GOARCH}; fi && cp $$(go env GOPATH)/bin/$${PREFIX}/gobgp .
226+ CGO_ENABLED=0 GOARCH=$(GOARCH) GOOS=linux go install github.com/osrg/gobgp/cmd/gobgp@$(GOBGP_VERSION) && if [ ${GOARCH} != $$(go env GOHOSTARCH) ]; then PREFIX=linux_${GOARCH}; fi && cp $$(go env GOPATH)/bin/$${PREFIX}/gobgp .
224227endif
228+ @echo Finished building gobgp.
225229
226230multiarch-binverify :
227231 @echo ' Verifying kube-router gobgp for ARCH=$(FILE_ARCH) ...'
@@ -232,7 +236,7 @@ help:
232236 @grep -E ' ^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST ) | \
233237 awk ' BEGIN {FS = ":.*?## "}; {printf "\033[36m%-22s\033[0m %s\n", $$1, $$2}'
234238
235- .PHONY : build clean container run release goreleaser push gofmt gofmt-fix gomoqs
239+ .PHONY : clean container run release goreleaser push gofmt gofmt-fix gomoqs
236240.PHONY : test lint docker-login push-manifest push-manifest-release
237241.PHONY : push-release github-release help gopath gopath-fix multiarch-binverify
238242
0 commit comments