63 lines
2.2 KiB
Makefile
63 lines
2.2 KiB
Makefile
# Image URL to use all building/pushing image targets
|
|
REGISTRY ?= reg.k8s.giftfish.de/library
|
|
IMAGE_NAME ?= pve-cloud-controller-manager
|
|
CONTROLLER_IMG ?= $(REGISTRY)/$(IMAGE_NAME)
|
|
TAG ?= dev
|
|
ARCH ?= amd64
|
|
|
|
PULL_POLICY ?= Always
|
|
|
|
# Get the currently used golang install path (in GOPATH/bin, unless GOBIN is set)
|
|
ifeq (,$(shell go env GOBIN))
|
|
GOBIN=$(shell go env GOPATH)/bin
|
|
else
|
|
GOBIN=$(shell go env GOBIN)
|
|
endif
|
|
|
|
all: manager
|
|
|
|
# Run tests
|
|
test: generate fmt vet manifests
|
|
go test ./... -coverprofile cover.out
|
|
|
|
# Build manager binary
|
|
manager: generate fmt vet
|
|
go build -o bin/manager main.go
|
|
|
|
# Run go fmt against code
|
|
fmt:
|
|
go fmt ./...
|
|
|
|
# Run go vet against code
|
|
vet:
|
|
go vet ./...
|
|
|
|
.PHONY: docker-build
|
|
docker-build: ## Build the docker image for controller-manager
|
|
docker build --pull --build-arg ARCH=$(ARCH) --build-arg LDFLAGS="$(LDFLAGS)" . -t $(CONTROLLER_IMG)-$(ARCH):$(TAG)
|
|
MANIFEST_IMG=$(CONTROLLER_IMG)-$(ARCH) MANIFEST_TAG=$(TAG) $(MAKE) set-manifest-image
|
|
$(MAKE) set-manifest-pull-policy
|
|
|
|
.PHONY: docker-push
|
|
docker-push: ## Push the docker image
|
|
docker push $(CONTROLLER_IMG)-$(ARCH):$(TAG)
|
|
|
|
.PHONY: docker-push-manifest
|
|
docker-push-manifest: ## Push the fat manifest docker image.
|
|
## Minimum docker version 18.06.0 is required for creating and pushing manifest images.
|
|
docker manifest create --amend $(CONTROLLER_IMG):$(TAG) $(shell echo $(ALL_ARCH) | sed -e "s~[^ ]*~$(CONTROLLER_IMG)\-&:$(TAG)~g")
|
|
@for arch in $(ALL_ARCH); do docker manifest annotate --arch $${arch} ${CONTROLLER_IMG}:${TAG} ${CONTROLLER_IMG}-$${arch}:${TAG}; done
|
|
docker manifest push --purge ${CONTROLLER_IMG}:${TAG}
|
|
MANIFEST_IMG=$(CONTROLLER_IMG) MANIFEST_TAG=$(TAG) $(MAKE) set-manifest-image
|
|
$(MAKE) set-manifest-pull-policy
|
|
|
|
.PHONY: set-manifest-image
|
|
set-manifest-image:
|
|
$(info Updating kustomize image patch file for manager resource)
|
|
sed -i'' -e 's@image: .*@image: '"${MANIFEST_IMG}:$(MANIFEST_TAG)"'@' ./config/manager/manager_image_patch.yaml
|
|
|
|
|
|
.PHONY: set-manifest-pull-policy
|
|
set-manifest-pull-policy:
|
|
$(info Updating kustomize pull policy file for manager resource)
|
|
sed -i'' -e 's@imagePullPolicy: .*@imagePullPolicy: '"$(PULL_POLICY)"'@' ./config/manager/manager_pull_policy.yaml
|