k8s.io/kubernetes@v1.29.3/test/conformance/image/Makefile (about) 1 # Copyright 2016 The Kubernetes Authors. 2 # 3 # Licensed under the Apache License, Version 2.0 (the "License"); 4 # you may not use this file except in compliance with the License. 5 # You may obtain a copy of the License at 6 # 7 # http://www.apache.org/licenses/LICENSE-2.0 8 # 9 # Unless required by applicable law or agreed to in writing, software 10 # distributed under the License is distributed on an "AS IS" BASIS, 11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 # See the License for the specific language governing permissions and 13 # limitations under the License. 14 15 # Build the conformance image. 16 # 17 # Usage: 18 # [ARCH=amd64] [REGISTRY="registry.k8s.io"] make (build|push) VERSION={some_released_version_of_kubernetes} 19 20 REGISTRY?=registry.k8s.io 21 ARCH?=amd64 22 OUT_DIR?=_output 23 24 LOCAL_OUTPUT_PATH=$(shell pwd)/../../../$(OUT_DIR)/local/bin/linux/$(ARCH) 25 DOCKERIZED_OUTPUT_PATH=$(shell pwd)/../../../$(OUT_DIR)/dockerized/bin/linux/$(ARCH) 26 27 GINKGO_BIN?=$(shell test -f $(LOCAL_OUTPUT_PATH)/ginkgo && echo $(LOCAL_OUTPUT_PATH)/ginkgo || echo $(DOCKERIZED_OUTPUT_PATH)/ginkgo) 28 KUBECTL_BIN?=$(shell test -f $(LOCAL_OUTPUT_PATH)/kubectl && echo $(LOCAL_OUTPUT_PATH)/kubectl || echo $(DOCKERIZED_OUTPUT_PATH)/kubectl) 29 E2E_TEST_BIN?=$(shell test -f $(LOCAL_OUTPUT_PATH)/e2e.test && echo $(LOCAL_OUTPUT_PATH)/e2e.test || echo $(DOCKERIZED_OUTPUT_PATH)/e2e.test) 30 E2E_GO_RUNNER_BIN?=$(shell test -f $(LOCAL_OUTPUT_PATH)/go-runner && echo $(LOCAL_OUTPUT_PATH)/go-runner || echo $(DOCKERIZED_OUTPUT_PATH)/go-runner) 31 32 CLUSTER_DIR?=$(shell pwd)/../../../cluster/ 33 34 # This is defined in root Makefile, but some build contexts do not refer to them 35 KUBE_BASE_IMAGE_REGISTRY?=registry.k8s.io 36 BASE_IMAGE_VERSION?=bookworm-v1.0.1 37 RUNNERIMAGE?=${KUBE_BASE_IMAGE_REGISTRY}/build-image/debian-base-${ARCH}:${BASE_IMAGE_VERSION} 38 39 TEMP_DIR:=$(shell mktemp -d -t conformance-XXXXXX) 40 41 all: build 42 43 build: 44 45 ifndef VERSION 46 $(error VERSION is undefined) 47 endif 48 cp -r ./* ${TEMP_DIR} 49 50 cp ${GINKGO_BIN} ${TEMP_DIR} 51 cp ${KUBECTL_BIN} ${TEMP_DIR} 52 cp ${E2E_TEST_BIN} ${TEMP_DIR} 53 cp ${E2E_GO_RUNNER_BIN} ${TEMP_DIR}/gorunner 54 cp -r ${CLUSTER_DIR} ${TEMP_DIR}/cluster 55 56 chmod a+rx ${TEMP_DIR}/ginkgo 57 chmod a+rx ${TEMP_DIR}/kubectl 58 chmod a+rx ${TEMP_DIR}/e2e.test 59 chmod a+rx ${TEMP_DIR}/gorunner 60 61 DOCKER_CLI_EXPERIMENTAL=enabled docker buildx build \ 62 --platform linux/${ARCH} \ 63 --load \ 64 --pull \ 65 -t ${REGISTRY}/conformance-${ARCH}:${VERSION} \ 66 --build-arg RUNNERIMAGE=$(RUNNERIMAGE) \ 67 ${TEMP_DIR} 68 rm -rf "${TEMP_DIR}" 69 70 push: build 71 docker push ${REGISTRY}/conformance-${ARCH}:${VERSION} 72 ifeq ($(ARCH),amd64) 73 docker rmi ${REGISTRY}/conformance:${VERSION} 2>/dev/null || true 74 docker tag ${REGISTRY}/conformance-${ARCH}:${VERSION} ${REGISTRY}/conformance:${VERSION} 75 docker push ${REGISTRY}/conformance:${VERSION} 76 endif 77 78 .PHONY: build push all