# Copyright 2020 The Kubernetes Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # shared makefile for all images # get image name from directory we're building IMAGE_NAME=$(notdir $(CURDIR)) # docker image registry, default to upstream REGISTRY?=gcr.io/k8s-staging-kind # tag based on date-sha TAG?=$(shell echo "$$(date +v%Y%m%d)-$$(git describe --always --dirty)") # the full image tag IMAGE?=$(REGISTRY)/$(IMAGE_NAME):$(TAG) # Go version to use, respected by images that build go binaries GO_VERSION=$(shell cat $(CURDIR)/../../.go-version | head -n1) # required to enable buildx export DOCKER_CLI_EXPERIMENTAL=enabled # build with buildx PLATFORMS?=linux/amd64,linux/arm64 OUTPUT?= PROGRESS=auto EXTRA_BUILD_OPT?= build: ensure-buildx docker buildx build $(if $(PLATFORMS),--platform=$(PLATFORMS),) $(OUTPUT) --progress=$(PROGRESS) -t ${IMAGE} --pull --build-arg GO_VERSION=$(GO_VERSION) $(EXTRA_BUILD_OPT) . # push the cross built image push: OUTPUT=--push push: build # quick can be used to do a build that will be imported into the local docker # for sanity checking before doing a cross build push # cross builds cannot be imported locally at the moment # https://github.com/docker/buildx/issues/59 quick: PLATFORMS= quick: OUTPUT=--load quick: build # enable buildx ensure-buildx: ./../../hack/build/init-buildx.sh .PHONY: push build quick ensure-buildx