diff --git a/Makefile b/Makefile index e2c277511..adbac293e 100644 --- a/Makefile +++ b/Makefile @@ -375,46 +375,47 @@ STAGING_BUCKET ?= k8s-staging-cloud-pv-vsphere IMAGE_NAME ?= cloud-provider-vsphere VERSION ?=$(shell git describe --dirty --always) -# Default build type, this can be choosen from pr/ci/release -BUILD_TYPE := ci -BUILD_FOLDER := .build/bin +# Default image registry and image binary path +IMAGE_PATH := $(STAGING_REGISTRY)/$(IMAGE_NAME):$(VERSION) +BINARY_PATH := gs://$(STAGING_BUCKET)/$(VERSION)/bin/$(GOOS)/$(GOARCH) +LOCAL_BINARY_PATH := $(abspath $(BIN_OUT))/vsphere-cloud-controller-manager.$(GOOS)_$(GOARCH) -.PHONY: docker-build -docker-build: +.PHONY: docker-build-and-push +docker-build-and-push: docker build \ -f cluster/images/controller-manager/Dockerfile \ - -t "$(STAGING_REGISTRY)/$(BUILD_TYPE)/$(IMAGE_NAME):$(VERSION)" \ + -t $(IMAGE_PATH) \ --build-arg "VERSION=${VERSION}" \ - --build-arg "GOPROXY=${GOPROXY}" \ - . - -.PHONY: docker-push -docker-push: - docker push "$(STAGING_REGISTRY)/$(BUILD_TYPE)/$(IMAGE_NAME):$(VERSION)" + --build-arg "GOPROXY=${GOPROXY}" \ + . + docker push "$(IMAGE_PATH)" .PHONY: ccm-bin-push ccm-bin-push: - $(shell shasum -a 256 $(BUILD_FOLDER)/vsphere-cloud-controller-manager.$(GOOS)_$(GOARCH) 2>/dev/null > $(BUILD_FOLDER)/vsphere-cloud-controller-manager.$(GOOS)_$(GOARCH).sha256) - gsutil cp "$(BUILD_FOLDER)/vsphere-cloud-controller-manager.$(GOOS)_$(GOARCH)" "gs://$(STAGING_BUCKET)/$(BUILD_TYPE)/$(VERSION)/bin/$(GOOS)/$(GOARCH)/vsphere-cloud-controller-manager" - gsutil cp "$(BUILD_FOLDER)/vsphere-cloud-controller-manager.$(GOOS)_$(GOARCH).sha256" "gs://$(STAGING_BUCKET)/$(BUILD_TYPE)/$(VERSION)/bin/$(GOOS)/$(GOARCH)/vsphere-cloud-controller-manager.sha256" + $(shell { sha256sum $(LOCAL_BINARY_PATH) || shasum -a 256 $(LOCAL_BINARY_PATH); } 2>/dev/null > $(LOCAL_BINARY_PATH).sha256) + gsutil cp "$(LOCAL_BINARY_PATH)" "$(BINARY_PATH)/vsphere-cloud-controller-manager" + gsutil cp "$(LOCAL_BINARY_PATH).sha256" "$(BINARY_PATH)/vsphere-cloud-controller-manager.sha256" .PHONY: pr-staging pr-staging: - $(MAKE) BUILD_TYPE=pr docker-build - $(MAKE) BUILD_TYPE=pr docker-push + $(MAKE) IMAGE_PATH=$(STAGING_REGISTRY)/pr/$(IMAGE_NAME):$(VERSION) docker-build-and-push $(MAKE) build-bins - $(MAKE) BUILD_TYPE=pr ccm-bin-push + $(MAKE) BINARY_PATH=gs://$(STAGING_BUCKET)/pr/$(VERSION)/bin/$(GOOS)/$(GOARCH) ccm-bin-push .PHONY: ci-staging ci-staging: - $(MAKE) BUILD_TYPE=ci docker-build - $(MAKE) BUILD_TYPE=ci docker-push + $(MAKE) IMAGE_PATH=$(STAGING_REGISTRY)/ci/$(IMAGE_NAME):$(VERSION) docker-build-and-push + $(MAKE) build-bins + $(MAKE) BINARY_PATH=gs://$(STAGING_BUCKET)/ci/$(VERSION)/bin/$(GOOS)/$(GOARCH) ccm-bin-push + +.PHONY: release-staging-nightly +release-staging-nightly: + $(MAKE) IMAGE_PATH=$(STAGING_REGISTRY)/nightly/$(IMAGE_NAME):$(VERSION)-$(shell date +'%Y%m%d') docker-build-and-push $(MAKE) build-bins - $(MAKE) BUILD_TYPE=ci ccm-bin-push + $(MAKE) BINARY_PATH=gs://$(STAGING_BUCKET)/nightly/$(VERSION)-$(shell date +'%Y%m%d')/bin/$(GOOS)/$(GOARCH) ccm-bin-push .PHONY: release-staging release-staging: - $(MAKE) BUILD_TYPE=release docker-build - $(MAKE) BUILD_TYPE=release docker-push + $(MAKE) docker-build-and-push $(MAKE) build-bins - $(MAKE) BUILD_TYPE=release ccm-bin-push + $(MAKE) ccm-bin-push diff --git a/cloudbuild-nightly.yaml b/cloudbuild-nightly.yaml index 3c5f124ac..b321348e4 100644 --- a/cloudbuild-nightly.yaml +++ b/cloudbuild-nightly.yaml @@ -13,7 +13,7 @@ steps: - PULL_BASE_REF=$_PULL_BASE_REF - DOCKER_BUILDKIT=1 args: - - ci-staging + - release-staging-nightly substitutions: # _GIT_TAG will be filled with a git-based tag for the image, of the form vYYYYMMDD-hash, and # can be used as a substitution