@@ -31,20 +31,24 @@ VERSION?=master
3131DATE =` date -Iseconds `
3232COMMIT? =` git rev-parse --verify HEAD `
3333LDFLAGS ="-X github.com/Mellanox/network-operator/version.Version=$(BUILD_VERSION ) -X github.com/Mellanox/network-operator/version.Commit=$(COMMIT ) -X github.com/Mellanox/network-operator/version.Date=$(DATE ) "
34+ GCFLAGS =""
3435BUILD_VERSION := $(strip $(shell [ -d .git ] && git describe --always --tags --dirty) )
3536BUILD_TIMESTAMP := $(shell date -u +"% Y-% m-% dT% H:% M:% S% Z")
3637VCS_BRANCH := $(strip $(shell git rev-parse --abbrev-ref HEAD) )
3738VCS_REF := $(strip $(shell [ -d .git ] && git rev-parse --short HEAD) )
3839
3940# Docker
4041IMAGE_BUILDER? =docker
41- IMAGEDIR =$(CURDIR ) /images
4242DOCKERFILE? =$(CURDIR ) /Dockerfile
4343TAG? =mellanox/network-operator
44+ REGISTRY? =docker.io
45+ IMAGE_NAME? =network-operator
46+ CONTROLLER_IMAGE =$(REGISTRY ) /$(IMAGE_NAME )
4447IMAGE_BUILD_OPTS? =
4548BUNDLE_IMG? =network-operator-bundle:$(VERSION )
4649# BUNDLE_GEN_FLAGS are the flags passed to the operator-sdk generate bundle command
4750BUNDLE_GEN_FLAGS ?= -q --overwrite --version $(VERSION ) $(BUNDLE_METADATA_OPTS )
51+ BUILD_ARCH = amd64 arm64
4852
4953# USE_IMAGE_DIGESTS defines if images are resolved via tags or digests
5054# You can enable this value if you would like to use SHA Based Digests
@@ -199,7 +203,8 @@ lint: | $(GOLANGCI_LINT) ; $(info running golangci-lint...) @ ## Run golangci-l
199203
200204.PHONY : lint-dockerfile
201205lint-dockerfile : $(HADOLINT ) ; $(info running Dockerfile lint with hadolint...) @ # # Run hadolint
202- $Q $(HADOLINT ) Dockerfile
206+ # Ignoring warning DL3029: Do not use --platform flag with FROM
207+ $Q $(HADOLINT) --ignore DL3029 Dockerfile
203208
204209.PHONY : lint-helm
205210lint-helm : $(HELM ) ; $(info running lint for helm charts...) @ # # Run helm lint
@@ -259,11 +264,42 @@ image: ; $(info Building Docker image...) @ ## Build container image
259264 --build-arg VCS_REF=" $( VCS_REF) " \
260265 --build-arg VCS_BRANCH=" $( VCS_BRANCH) " \
261266 --build-arg LDFLAGS=$(LDFLAGS ) \
267+ --build-arg ARCH=" $( ARCH) " \
268+ --build-arg GCFLAGS=" $( GCFLAGS) " \
262269 -t $(TAG ) -f $(DOCKERFILE ) $(CURDIR ) $(IMAGE_BUILD_OPTS )
263270
264271image-push :
265272 $(IMAGE_BUILDER ) push $(TAG )
266273
274+ # Container image
275+ .PHONY : image-build
276+ image-build : ; $(info Building Docker image...) @ # # Build container image
277+ DOCKER_BUILDKIT=1 $(IMAGE_BUILDER ) build --build-arg BUILD_DATE=" $( BUILD_TIMESTAMP) " \
278+ --build-arg VERSION=" $( BUILD_VERSION) " \
279+ --build-arg VCS_REF=" $( VCS_REF) " \
280+ --build-arg VCS_BRANCH=" $( VCS_BRANCH) " \
281+ --build-arg LDFLAGS=$(LDFLAGS ) \
282+ --build-arg ARCH=" $( ARCH) " \
283+ --build-arg GCFLAGS=" $( GCFLAGS) " \
284+ -t $(CONTROLLER_IMAGE ) -$(ARCH ) :$(VERSION ) -f $(DOCKERFILE ) $(CURDIR ) $(IMAGE_BUILD_OPTS )
285+
286+ image-build-% :
287+ make ARCH=$* image-build
288+
289+ .PHONY : image-build-multiarch
290+ image-build-multiarch : $(addprefix image-build-,$(BUILD_ARCH ) )
291+
292+ image-push-for-arch :
293+ $(IMAGE_BUILDER ) push $(CONTROLLER_IMAGE ) -$(ARCH ) :$(VERSION )
294+
295+ image-push-for-arch-% :
296+ make ARCH=$* image-push-for-arch
297+
298+ .PHONY : image-push-multiarch
299+ image-push-multiarch : $(addprefix image-push-for-arch-,$(BUILD_ARCH ) )
300+ $(IMAGE_BUILDER ) manifest create $(CONTROLLER_IMAGE ) :$(VERSION ) $(shell echo $(BUILD_ARCH ) | sed -e "s~[^ ]* ~$(CONTROLLER_IMAGE ) \-&:$(VERSION ) ~g")
301+ $(IMAGE_BUILDER ) manifest push --purge $(CONTROLLER_IMAGE ) :$(VERSION )
302+
267303.PHONY : chart-build
268304chart-build : $(HELM ) ; $(info Building Helm image...) @ # # Build Helm Chart
269305 @if [ -z " $( APP_VERSION) " ]; then \
0 commit comments