Skip to content

Commit 080f4ca

Browse files
committed
build: add script to build images and used in makefile
Signed-off-by: Wei Zhang <[email protected]>
1 parent 989fa3a commit 080f4ca

File tree

2 files changed

+67
-10
lines changed

2 files changed

+67
-10
lines changed

Makefile

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,6 @@ COMMONENVVAR=GOOS=$(shell uname -s | tr A-Z a-z)
1717
BUILDENVVAR=CGO_ENABLED=0
1818
INTEGTESTENVVAR=SCHED_PLUGINS_TEST_VERBOSE=1
1919

20-
LOCAL_REGISTRY=localhost:5000/scheduler-plugins
21-
LOCAL_IMAGE=kube-scheduler:latest
22-
LOCAL_CONTROLLER_IMAGE=controller:latest
23-
2420
# RELEASE_REGISTRY is the container registry to push
2521
# into. The default is to push to the staging
2622
# registry, not production(k8s.gcr.io).
@@ -74,18 +70,25 @@ build-scheduler.arm64v8:
7470

7571
.PHONY: local-image
7672
local-image: clean
77-
docker build -f ./build/scheduler/Dockerfile --build-arg ARCH="amd64" --build-arg RELEASE_VERSION="$(RELEASE_VERSION)" -t $(LOCAL_REGISTRY)/$(LOCAL_IMAGE) .
78-
docker build -f ./build/controller/Dockerfile --build-arg ARCH="amd64" -t $(LOCAL_REGISTRY)/$(LOCAL_CONTROLLER_IMAGE) .
73+
RELEASE_VERSION=$(RELEASE_VERSION) hack/build-images.sh
7974

8075
.PHONY: release-image.amd64
8176
release-image.amd64: clean
82-
docker build -f ./build/scheduler/Dockerfile --build-arg ARCH="amd64" --build-arg RELEASE_VERSION="$(RELEASE_VERSION)" -t $(RELEASE_REGISTRY)/$(RELEASE_IMAGE)-amd64 .
83-
docker build -f ./build/controller/Dockerfile --build-arg ARCH="amd64" -t $(RELEASE_REGISTRY)/$(RELEASE_CONTROLLER_IMAGE)-amd64 .
77+
ARCH="amd64" \
78+
RELEASE_VERSION=$(RELEASE_VERSION) \
79+
REGISTRY=$(RELEASE_REGISTRY) \
80+
IMAGE=$(RELEASE_IMAGE)-amd64 \
81+
CONTROLLER_IMAGE=$(RELEASE_CONTROLLER_IMAGE)-amd64 \
82+
hack/build-images.sh
8483

8584
.PHONY: release-image.arm64v8
8685
release-image.arm64v8: clean
87-
docker build -f ./build/scheduler/Dockerfile --build-arg ARCH="arm64v8" --build-arg RELEASE_VERSION="$(RELEASE_VERSION)" -t $(RELEASE_REGISTRY)/$(RELEASE_IMAGE)-arm64 .
88-
docker build -f ./build/controller/Dockerfile --build-arg ARCH="arm64v8" -t $(RELEASE_REGISTRY)/$(RELEASE_CONTROLLER_IMAGE)-arm64 .
86+
ARCH="arm64" \
87+
RELEASE_VERSION=$(RELEASE_VERSION) \
88+
REGISTRY=$(RELEASE_REGISTRY) \
89+
IMAGE=$(RELEASE_IMAGE)-amd64 \
90+
CONTROLLER_IMAGE=$(RELEASE_CONTROLLER_IMAGE)-arm64 \
91+
hack/build-images.sh
8992

9093
.PHONY: push-release-images
9194
push-release-images: release-image.amd64 release-image.arm64v8

hack/build-images.sh

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
#!/usr/bin/env bash
2+
3+
# Copyright 2023 The Kubernetes Authors.
4+
#
5+
# Licensed under the Apache License, Version 2.0 (the "License");
6+
# you may not use this file except in compliance with the License.
7+
# You may obtain a copy of the License at
8+
#
9+
# http://www.apache.org/licenses/LICENSE-2.0
10+
#
11+
# Unless required by applicable law or agreed to in writing, software
12+
# distributed under the License is distributed on an "AS IS" BASIS,
13+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
# See the License for the specific language governing permissions and
15+
# limitations under the License.
16+
17+
set -o errexit
18+
set -o nounset
19+
set -o pipefail
20+
21+
SCRIPT_ROOT=$(realpath $(dirname "${BASH_SOURCE[@]}")/..)
22+
23+
SCHEDULER_DIR="${SCRIPT_ROOT}"/build/scheduler
24+
CONTROLLER_DIR="${SCRIPT_ROOT}"/build/controller
25+
26+
REGISTRY=${REGISTRY:-"localhost:5000/scheduler-plugins"}
27+
IMAGE=${IMAGE:-"kube-scheduler:latest"}
28+
CONTROLLER_IMAGE=${CONTROLLER_IMAGE:-"controller:latest"}
29+
30+
RELEASE_VERSION=${RELEASE_VERSION:-"v0.0.0"}
31+
32+
BUILDER=${BUILDER:-"docker"}
33+
34+
if ! command -v ${BUILDER} && command -v nerdctl >/dev/null; then
35+
BUILDER=nerdctl
36+
fi
37+
38+
ARCH=${ARCH:-$(go env GOARCH)}
39+
if [[ "${ARCH}" == "arm64" ]]; then
40+
ARCH="arm64v8"
41+
fi
42+
43+
cd "${SCRIPT_ROOT}"
44+
45+
${BUILDER} build \
46+
-f ${SCHEDULER_DIR}/Dockerfile \
47+
--build-arg ARCH=${ARCH} \
48+
--build-arg RELEASE_VERSION=${RELEASE_VERSION} \
49+
-t ${REGISTRY}/${IMAGE} .
50+
${BUILDER} build \
51+
-f ${CONTROLLER_DIR}/Dockerfile \
52+
--build-arg ARCH=${ARCH} \
53+
--build-arg RELEASE_VERSION=${RELEASE_VERSION} \
54+
-t ${REGISTRY}/${CONTROLLER_IMAGE} .

0 commit comments

Comments
 (0)