Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 29 additions & 12 deletions build/build-all-multi.sh
Original file line number Diff line number Diff line change
@@ -1,22 +1,39 @@
#!/usr/bin/env bash
set -ex

PLATFORM=${PLATFORM:-"linux/amd64,linux/arm64"}
IMAGE_TAG=${IMAGE_TAG:-"latest"}

if [ -n "$IMAGE_REPO" ]; then
PUSH=true
else
IMAGE_REPO="local"
PUSH=false
fi

BUILD_ARGS=(
--frontend dockerfile.v0
--local context=.
--local dockerfile=build/multi
--opt filename=Dockerfile.multi
--opt "platform=linux/amd64,linux/arm64"
--opt "build-arg:CSI_VERSION=$(git describe --tags --always --dirty)"
--opt "platform=${PLATFORM}"
--opt "build-arg:CSI_VERSION=$(git describe --tags --match='v*' --always --dirty)"
--opt "build-arg:SOURCE_DATE_EPOCH=$(git log -1 --pretty=%ct)"
)
BUILD_ARGS+=("$@")

buildctl build "${BUILD_ARGS[@]}" \
--output type=image,name=alibaba-cloud-csi-driver:latest
buildctl build "${BUILD_ARGS[@]}" \
--opt target=csi-controller \
--output type=image,name=alibaba-cloud-csi-driver:latest-controller
buildctl build "${BUILD_ARGS[@]}" \
--opt target=init \
--output type=image,name=alibaba-cloud-csi-driver:latest-init
build_image() {
local image=$1
shift
buildctl build "${BUILD_ARGS[@]}" "$@" \
--output "type=image,push=$PUSH,name=${IMAGE_REPO}/${image}"
}

MAIN_ARGS=(--local dockerfile=build/multi --opt filename=Dockerfile.multi)
build_image "csi-plugin:${IMAGE_TAG}" "${MAIN_ARGS[@]}"
build_image "csi-plugin:${IMAGE_TAG}-controller" "${MAIN_ARGS[@]}" --opt target=csi-controller
build_image "csi-plugin:${IMAGE_TAG}-init" "${MAIN_ARGS[@]}" --opt target=init

PROXY_ARGS=(--local dockerfile=build/mount-proxy --opt filename=Dockerfile)
build_image "csi-ossfs:${IMAGE_TAG}" "${PROXY_ARGS[@]}" --opt target=ossfs
build_image "csi-ossfs:${IMAGE_TAG}-1.88" "${PROXY_ARGS[@]}" --opt target=ossfs-1.88
build_image "csi-ossfs2:${IMAGE_TAG}" "${PROXY_ARGS[@]}" --opt target=ossfs2
build_image "csi-alinas:${IMAGE_TAG}" "${PROXY_ARGS[@]}" --opt target=alinas
22 changes: 15 additions & 7 deletions build/mount-proxy/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,19 +1,27 @@
FROM --platform=$BUILDPLATFORM registry-cn-hangzhou.ack.aliyuncs.com/dev/golang:1.26.1 as builder
FROM --platform=$BUILDPLATFORM registry-cn-hangzhou.ack.aliyuncs.com/dev/golang:1.26.1 AS builder
WORKDIR /src
ARG TARGETARCH
ARG TARGETOS
RUN --mount=type=bind,target=. \
--mount=type=cache,target=/root/.cache/go-build \
export GOOS=$TARGETOS && \
export GOARCH=$TARGETARCH && \
export CGO_ENABLED=0 && \
go build -o /out/csi-mount-proxy-server ./cmd/mount-proxy-server && \
go build -o /out/csi-mount-proxy-client ./cmd/mount-proxy-client

FROM registry-cn-hangzhou.ack.aliyuncs.com/dev/alinux:3-update AS alinux-install

# uncomment as needed when testing, makes image larger but build faster by reusing yum cache
# RUN find /etc/yum.repos.d -name '*.repo' -exec \
# sed -i 's|mirrors\.cloud\.aliyuncs\.com|mirrors.aliyun.com|g' {} + && \
# yum makecache

#################### OSSFS 1.91 MOUNT-PROXY IMAGE ####################

FROM registry-cn-hangzhou.ack.aliyuncs.com/dev/alinux:3-update as ossfs
FROM alinux-install AS ossfs
ARG TARGETPLATFORM
ARG OSSFS_VERSION
ARG OSSFS_VERSION=v1.91.9.ack.1

# install ossfs
RUN set -ex; \
Expand All @@ -36,7 +44,7 @@ ENTRYPOINT ["csi-mount-proxy-server", "--driver=ossfs"]

#################### OSSFS 1.88 MOUNT-PROXY IMAGE ####################

FROM registry-cn-hangzhou.ack.aliyuncs.com/dev/alinux:3-update as ossfs-1.88
FROM alinux-install AS ossfs-1.88
ARG TARGETPLATFORM

# install ossfs
Expand Down Expand Up @@ -70,9 +78,9 @@ ENTRYPOINT ["csi-mount-proxy-server", "--driver=ossfs"]

#################### OSSFS2 MOUNT-PROXY IMAGE ####################

FROM registry-cn-hangzhou.ack.aliyuncs.com/dev/alinux:3-update as ossfs2
FROM alinux-install AS ossfs2
ARG TARGETPLATFORM
ARG OSSFS_VERSION
ARG OSSFS_VERSION=v2.0.5.ack.1

# install ossfs
# only supports x86_64
Expand All @@ -93,7 +101,7 @@ ENTRYPOINT ["csi-mount-proxy-server", "--driver=ossfs2"]

#################### ALINAS MOUNT-PROXY IMAGE ####################

FROM registry-cn-hangzhou.ack.aliyuncs.com/dev/alinux:3-update as alinas
FROM alinux-install AS alinas

ARG TARGETPLATFORM
ARG ALINAS_UTILS_VERSION=1.9-0.20260407144027.3d3855.al8
Expand Down
4 changes: 2 additions & 2 deletions hack/update-versions.sh
Original file line number Diff line number Diff line change
Expand Up @@ -66,9 +66,9 @@ sed -i '' "s/^ARG ALINAS_UTILS_ARM_VERSION=.*/ARG ALINAS_UTILS_ARM_VERSION=${ALI
MOUNT_PROXY_DOCKERFILE="${ROOT_DIR}/build/mount-proxy/Dockerfile"
echo "Updating ${MOUNT_PROXY_DOCKERFILE}..."
# Update OSSFS_VERSION for ossfs (first occurrence, before ossfs-1.88)
sed -i '' "/^FROM.*as ossfs$/,/^FROM.*as ossfs-1.88$/ s/^ARG OSSFS_VERSION=.*/ARG OSSFS_VERSION=${OSSFS_RPM_VERSION_ESC}/" "${MOUNT_PROXY_DOCKERFILE}"
sed -i '' "/^FROM.*AS ossfs$/,/^FROM.*AS ossfs-1.88$/ s/^ARG OSSFS_VERSION=.*/ARG OSSFS_VERSION=${OSSFS_RPM_VERSION_ESC}/" "${MOUNT_PROXY_DOCKERFILE}"
# Update OSSFS_VERSION for ossfs2 (second occurrence, after ossfs-1.88)
sed -i '' "/^FROM.*as ossfs2$/,/^FROM.*as alinas$/ s/^ARG OSSFS_VERSION=.*/ARG OSSFS_VERSION=${OSSFS2_RPM_VERSION_ESC}/" "${MOUNT_PROXY_DOCKERFILE}"
sed -i '' "/^FROM.*AS ossfs2$/,/^FROM.*AS alinas$/ s/^ARG OSSFS_VERSION=.*/ARG OSSFS_VERSION=${OSSFS2_RPM_VERSION_ESC}/" "${MOUNT_PROXY_DOCKERFILE}"
sed -i '' "s/^ARG ALINAS_UTILS_VERSION=.*/ARG ALINAS_UTILS_VERSION=${ALINAS_UTILS_VERSION_ESC}/" "${MOUNT_PROXY_DOCKERFILE}"
sed -i '' "s/^ARG EFC_VERSION=.*/ARG EFC_VERSION=${EFC_VERSION_ESC}/" "${MOUNT_PROXY_DOCKERFILE}"
sed -i '' "s/^ARG EFC_ARM_VERSION=.*/ARG EFC_ARM_VERSION=${EFC_ARM_VERSION_ESC}/" "${MOUNT_PROXY_DOCKERFILE}"
Expand Down