Skip to content

Commit 5fc33cd

Browse files
authored
Merge pull request #773 from Huang-Wei/BUILDPLATFORM
2 parents 01153c8 + d547ee8 commit 5fc33cd

File tree

4 files changed

+27
-16
lines changed

4 files changed

+27
-16
lines changed

Makefile

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@
1313
# limitations under the License.
1414

1515
GO_VERSION := $(shell awk '/^go /{print $$2}' go.mod|head -n1)
16-
COMMONENVVAR=GOOS=$(shell uname -s | tr A-Z a-z)
17-
BUILDENVVAR=CGO_ENABLED=0
1816
INTEGTESTENVVAR=SCHED_PLUGINS_TEST_VERBOSE=1
1917

2018
# Manage platform and builders
@@ -26,10 +24,10 @@ else
2624
ALL_FLAG=
2725
endif
2826

29-
# RELEASE_REGISTRY is the container registry to push
27+
# REGISTRY is the container registry to push
3028
# into. The default is to push to the staging
3129
# registry, not production(registry.k8s.io).
32-
RELEASE_REGISTRY?=gcr.io/k8s-staging-scheduler-plugins
30+
REGISTRY?=gcr.io/k8s-staging-scheduler-plugins
3331
RELEASE_VERSION?=v$(shell date +%Y%m%d)-$(shell git describe --tags --match "v*")
3432
RELEASE_IMAGE:=kube-scheduler:$(RELEASE_VERSION)
3533
RELEASE_CONTROLLER_IMAGE:=controller:$(RELEASE_VERSION)
@@ -53,18 +51,18 @@ build: build-controller build-scheduler
5351

5452
.PHONY: build-controller
5553
build-controller:
56-
$(COMMONENVVAR) $(BUILDENVVAR) go build -ldflags '-w' -o bin/controller cmd/controller/controller.go
54+
go build -ldflags '-w' -o bin/controller cmd/controller/controller.go
5755

5856
.PHONY: build-scheduler
5957
build-scheduler:
60-
$(COMMONENVVAR) $(BUILDENVVAR) go build -ldflags '-X k8s.io/component-base/version.gitVersion=$(VERSION) -w' -o bin/kube-scheduler cmd/scheduler/main.go
58+
go build -ldflags '-X k8s.io/component-base/version.gitVersion=$(VERSION) -w' -o bin/kube-scheduler cmd/scheduler/main.go
6159

6260
.PHONY: build-images
6361
build-images:
6462
BUILDER=$(BUILDER) \
6563
PLATFORMS=$(PLATFORMS) \
6664
RELEASE_VERSION=$(RELEASE_VERSION) \
67-
REGISTRY=$(RELEASE_REGISTRY) \
65+
REGISTRY=$(REGISTRY) \
6866
IMAGE=$(RELEASE_IMAGE) \
6967
CONTROLLER_IMAGE=$(RELEASE_CONTROLLER_IMAGE) \
7068
GO_BASE_IMAGE=$(GO_BASE_IMAGE) \
@@ -78,6 +76,7 @@ local-image: RELEASE_VERSION="v0.0.0"
7876
local-image: IMAGE="kube-scheduler:latest"
7977
local-image: CONTROLLER_IMAGE="controller:latest"
8078
local-image: REGISTRY="localhost:5000/scheduler-plugins"
79+
local-image: EXTRA_ARGS="--load"
8180
local-image: clean build-images
8281

8382
.PHONY: release-images

build/controller/Dockerfile

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,14 @@
1313
# limitations under the License.
1414
ARG GO_BASE_IMAGE
1515
ARG DISTROLESS_BASE_IMAGE=gcr.io/distroless/static:nonroot
16-
FROM $GO_BASE_IMAGE as go_builder
16+
FROM --platform=${BUILDPLATFORM} $GO_BASE_IMAGE as go_builder
1717

1818
WORKDIR /go/src/sigs.k8s.io/scheduler-plugins
1919
COPY . .
20-
RUN make build-controller
20+
ARG TARGETARCH
21+
RUN make build-controller GO_BUILD_ENV='CGO_ENABLED=0 GOOS=linux GOARCH=${TARGETARCH}'
2122

22-
FROM $DISTROLESS_BASE_IMAGE
23+
FROM --platform=${BUILDPLATFORM} $DISTROLESS_BASE_IMAGE
2324

2425
COPY --from=go_builder /go/src/sigs.k8s.io/scheduler-plugins/bin/controller /bin/controller
2526

build/scheduler/Dockerfile

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,14 @@
1313
# limitations under the License.
1414
ARG GO_BASE_IMAGE
1515
ARG DISTROLESS_BASE_IMAGE=gcr.io/distroless/static:nonroot
16-
FROM $GO_BASE_IMAGE as go-builder
16+
FROM --platform=${BUILDPLATFORM} $GO_BASE_IMAGE as go-builder
1717

1818
WORKDIR /go/src/sigs.k8s.io/scheduler-plugins
1919
COPY . .
20-
ARG RELEASE_VERSION
21-
RUN RELEASE_VERSION=${RELEASE_VERSION} make build-scheduler
20+
ARG TARGETARCH
21+
RUN make build-scheduler GO_BUILD_ENV='CGO_ENABLED=0 GOOS=linux GOARCH=${TARGETARCH}'
2222

23-
FROM $DISTROLESS_BASE_IMAGE
23+
FROM --platform=${BUILDPLATFORM} $DISTROLESS_BASE_IMAGE
2424

2525
COPY --from=go-builder /go/src/sigs.k8s.io/scheduler-plugins/bin/kube-scheduler /bin/kube-scheduler
2626

hack/build-images.sh

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,17 @@ if [[ "${BUILDER}" == "podman" ]]; then
3838
fi
3939

4040
cd "${SCRIPT_ROOT}"
41+
IMAGE_BUILD_CMD=${DOCKER_BUILDX_CMD:-${BUILDER} buildx}
42+
43+
# use RELEASE_VERSION==v0.0.0 to tell if it's a local image build.
44+
BLD_INSTANCE=""
45+
if [[ "${RELEASE_VERSION}" == "v0.0.0" ]]; then
46+
BLD_INSTANCE=$($IMAGE_BUILD_CMD create --use)
47+
fi
4148

4249
# DOCKER_BUILDX_CMD is an env variable set in CI (valued as "/buildx-entrypoint")
4350
# If it's set, use it; otherwise use "$BUILDER buildx"
44-
${DOCKER_BUILDX_CMD:-${BUILDER} buildx} build \
51+
${IMAGE_BUILD_CMD} build \
4552
--platform=${PLATFORMS} \
4653
-f ${SCHEDULER_DIR}/Dockerfile \
4754
--build-arg RELEASE_VERSION=${RELEASE_VERSION} \
@@ -50,11 +57,15 @@ ${DOCKER_BUILDX_CMD:-${BUILDER} buildx} build \
5057
--build-arg CGO_ENABLED=0 \
5158
${EXTRA_ARGS:-} ${TAG_FLAG:-} ${REGISTRY}/${IMAGE} .
5259

53-
${DOCKER_BUILDX_CMD:-${BUILDER} buildx} build \
60+
${IMAGE_BUILD_CMD} build \
5461
--platform=${PLATFORMS} \
5562
-f ${CONTROLLER_DIR}/Dockerfile \
5663
--build-arg RELEASE_VERSION=${RELEASE_VERSION} \
5764
--build-arg GO_BASE_IMAGE=${GO_BASE_IMAGE} \
5865
--build-arg DISTROLESS_BASE_IMAGE=${DISTROLESS_BASE_IMAGE} \
5966
--build-arg CGO_ENABLED=0 \
6067
${EXTRA_ARGS:-} ${TAG_FLAG:-} ${REGISTRY}/${CONTROLLER_IMAGE} .
68+
69+
if [[ ! -z $BLD_INSTANCE ]]; then
70+
${DOCKER_BUILDX_CMD:-${BUILDER} buildx} rm $BLD_INSTANCE
71+
fi

0 commit comments

Comments
 (0)