diff --git a/Makefile b/Makefile index 256e72873..9c52e1f65 100644 --- a/Makefile +++ b/Makefile @@ -48,6 +48,8 @@ ARCH ?= $(shell go env GOARCH) GOARCH = ${ARCH} DUMB_ARCH = ${ARCH} +GOBUILD_FLAGS := + ALL_ARCH = amd64 arm arm64 ppc64le s390x QEMUVERSION = v2.12.0 @@ -80,7 +82,7 @@ endif TEMP_DIR := $(shell mktemp -d) -DEF_VARS:=ARCH=$(ARCH) \ +DEF_VARS:=ARCH=$(ARCH) \ TAG=$(TAG) \ PKG=$(PKG) \ GOARCH=$(GOARCH) \ @@ -109,10 +111,15 @@ all-container: $(addprefix sub-container-,$(ALL_ARCH)) all-push: $(addprefix sub-push-,$(ALL_ARCH)) .PHONY: container -container: .container-$(ARCH) +container: clean-container .container-$(ARCH) .PHONY: .container-$(ARCH) .container-$(ARCH): + @echo "+ Copying artifact to temporary directory" + mkdir -p $(TEMP_DIR)/rootfs + cp bin/$(ARCH)/nginx-ingress-controller $(TEMP_DIR)/rootfs/nginx-ingress-controller + + @echo "+ Building container image $(MULTI_ARCH_IMG):$(TAG)" cp -RP ./* $(TEMP_DIR) $(SED_I) "s|BASEIMAGE|$(BASEIMAGE)|g" $(DOCKERFILE) $(SED_I) "s|QEMUARCH|$(QEMUARCH)|g" $(DOCKERFILE) @@ -134,6 +141,11 @@ ifeq ($(ARCH), amd64) $(DOCKER) tag $(MULTI_ARCH_IMG):$(TAG) $(IMAGE):$(TAG) endif +.PHONY: clean-container +clean-container: + @echo "+ Deleting container image $(MULTI_ARCH_IMG):$(TAG)" + $(DOCKER) rmi -f $(MULTI_ARCH_IMG):$(TAG) || true + .PHONY: register-qemu register-qemu: # Register /usr/bin/qemu-ARCH-static as the handler for binaries in multiple platforms @@ -149,17 +161,16 @@ ifeq ($(ARCH), amd64) $(DOCKER) push $(IMAGE):$(TAG) endif -.PHONY: clean -clean: - $(DOCKER) rmi -f $(MULTI_ARCH_IMG):$(TAG) || true - .PHONY: build -build: clean +build: + @echo "+ Building bin/$(ARCH)/nginx-ingress-controller" @$(DEF_VARS) \ + GOBUILD_FLAGS="$(GOBUILD_FLAGS)" \ build/go-in-docker.sh build/build.sh - mkdir -p $(TEMP_DIR)/rootfs - cp bin/$(ARCH)/nginx-ingress-controller $(TEMP_DIR)/rootfs/nginx-ingress-controller +.PHONY: clean +clean: + rm -rf bin/ .gocache/ .env .PHONY: static-check static-check: diff --git a/build/build.sh b/build/build.sh index fda1cc5a4..6d2e39cbd 100755 --- a/build/build.sh +++ b/build/build.sh @@ -28,20 +28,21 @@ mandatory=( ) missing=false -for var in ${mandatory[@]}; do - if [[ -z "${!var+x}" ]]; then +for var in "${mandatory[@]}"; do + if [[ -z "${!var:-}" ]]; then echo "Environment variable $var must be set" missing=true fi done -if [ "$missing" = true ];then +if [ "$missing" = true ]; then exit 1 fi export CGO_ENABLED=0 -go build -a -installsuffix cgo \ +go build \ + ${GOBUILD_FLAGS} \ -ldflags "-s -w \ -X ${PKG}/version.RELEASE=${TAG} \ -X ${PKG}/version.COMMIT=${GIT_COMMIT} \ diff --git a/build/go-in-docker.sh b/build/go-in-docker.sh index 75753c9a6..bcc575314 100755 --- a/build/go-in-docker.sh +++ b/build/go-in-docker.sh @@ -56,6 +56,7 @@ TAG=${TAG:-"0.0"} HOME=${HOME:-/root} KUBECONFIG=${HOME}/.kube/config GOARCH=${GOARCH} +GOBUILD_FLAGS=${GOBUILD_FLAGS:-"-v"} PWD=${PWD} BUSTED_ARGS=${BUSTED_ARGS:-""} REPO_INFO=${REPO_INFO:-local}