@@ -26,10 +26,28 @@ CONTROLLER_GEN = go run ${PROJECT_DIR}/vendor/sigs.k8s.io/controller-tools/cmd/c
2626ARCH ?= $(shell go env GOARCH)
2727
2828CONTAINER_RUNTIME ?= docker
29+ USE_DOCKER ?=
30+ ifeq ($(CONTAINER_RUNTIME ) , docker)
31+ USE_DOCKER = -docker
32+ endif
33+
2934BUILDER_IMAGE ?=
30- REGISTRY ?= gcr.io/k8s-staging-karpenter-cluster-api
31- TAG ?= latest
32- IMG ?= $(REGISTRY ) /karpenter-clusterapi-controller:$(TAG )
35+
36+ BUILDX_CMD ?= $(CONTAINER_RUNTIME ) buildx
37+ IMG_BUILD_CMD ?= $(BUILDX_CMD ) build
38+
39+ IMG_REGISTRY ?= gcr.io/k8s-staging-karpenter-cluster-api
40+ IMG_NAME ?= karpenter-clusterapi-controller
41+ IMG_REPO ?= $(IMG_REGISTRY ) /$(IMG_NAME )
42+ IMG_TAG ?= $(shell git describe --tags --dirty --always)
43+ IMG ?= $(IMG_REPO ) :$(IMG_TAG )
44+
45+ ifdef EXTRA_TAG
46+ IMG_EXTRA_TAG ?= $(IMG_REPO ) :$(EXTRA_TAG )
47+ endif
48+ ifdef IMG_EXTRA_TAG
49+ IMG_BUILD_EXTRA_OPTS += -t $(IMG_EXTRA_TAG )
50+ endif
3351
3452all : help
3553
@@ -50,16 +68,28 @@ generate: gen-objects manifests ## generate all controller-gen files
5068karpenter-clusterapi-controller : # # build the main karpenter controller
5169 go build -o bin/karpenter-clusterapi-controller cmd/controller/main.go
5270
53- .PHONY : image
54- image : # # Build manager container image
55- $(CONTAINER_RUNTIME ) build --build-arg BUILDER_IMAGE=$(BUILDER_IMAGE ) --build-arg ARCH=$(ARCH ) . -t $(IMG )
56-
57- .PHONY : image-push
58- image-push : # # Push the manager container image to the container registry
59- $(CONTAINER_RUNTIME ) push $(IMG )
60-
61- .PHONY : release-staging # # Build and push the staging image to the registry.
62- release-staging : image image-push
71+ # https://github.com/containers/buildah/issues/4671
72+ # podman/buildah does not support "buildx build --push"
73+ # Remove all this extra logic when it does
74+ .PHONY : image-build
75+ image-build :
76+ $(IMG_BUILD_CMD ) -t $(IMG ) \
77+ --build-arg BUILDER_IMAGE=$(BUILDER_IMAGE ) \
78+ --build-arg ARCH=$(ARCH ) \
79+ $(IMG_BUILD_EXTRA_OPTS ) .
80+ $(CONTAINER_RUNTIME ) push $(IMG ) $(IMG_EXTRA_TAG )
81+
82+ .PHONY : image-build-docker
83+ image-build-docker :
84+ $(IMG_BUILD_CMD ) -t $(IMG ) \
85+ --build-arg BUILDER_IMAGE=$(BUILDER_IMAGE ) \
86+ --build-arg ARCH=$(ARCH ) \
87+ $(PUSH ) \
88+ $(IMG_BUILD_EXTRA_OPTS ) .
89+
90+ .PHONY : image-push # Push the manager container image to the container IMG_REGISTRY
91+ image-push : PUSH=--push
92+ image-push : image-build$(USE_DOCKER )
6393
6494.PHONY : manifests
6595manifests : # # generate the controller-gen kubernetes manifests
0 commit comments