ci: add multi-arch dev image build script
- deploy/docker/build-dev.sh + make image-dev: linux/amd64+arm64 build & push, dev/dev-<sha>/dev-<date> tags, registry inline cache, auto create buildx builder - PUSH=0 falls back to host-arch build with --load for local verification - verified end-to-end (PUSH=0): container frontend build, CGO-free cross compile, upx pack 31.7MB->11.8MB, image smoke test 200
This commit is contained in:
Executable
+48
@@ -0,0 +1,48 @@
|
||||
#!/usr/bin/env sh
|
||||
# 构建 dev 镜像:默认多平台(amd64/arm64)并推送,PUSH=0 时按本机架构构建并加载到本地
|
||||
#
|
||||
# 用法:
|
||||
# sh deploy/docker/build-dev.sh # 多平台构建并推送 dev 标签
|
||||
# PUSH=0 sh deploy/docker/build-dev.sh # 本机架构构建 --load,仅本地
|
||||
# REGISTRY_IMAGE=demo/openteam PLATFORMS=linux/amd64 sh deploy/docker/build-dev.sh
|
||||
set -e
|
||||
|
||||
cd "$(dirname "$0")/../.."
|
||||
|
||||
REGISTRY_IMAGE=${REGISTRY_IMAGE:-mirrors2/opencatd-open}
|
||||
PLATFORMS=${PLATFORMS:-linux/amd64,linux/arm64}
|
||||
BUILDER=${BUILDER:-xbuilder}
|
||||
PUSH=${PUSH:-1}
|
||||
DOCKERFILE=${DOCKERFILE:-deploy/docker/Dockerfile}
|
||||
|
||||
SHORT_SHA=$(git rev-parse --short HEAD 2>/dev/null || echo unknown)
|
||||
DATE_TAG=$(date +%Y%m%d)
|
||||
|
||||
# 确保 buildx 容器构建器存在(默认 docker driver 不支持多平台)
|
||||
docker buildx inspect "$BUILDER" >/dev/null 2>&1 || docker buildx create --name "$BUILDER" --driver docker-container >/dev/null
|
||||
|
||||
TAGS="-t $REGISTRY_IMAGE:dev -t $REGISTRY_IMAGE:dev-$SHORT_SHA -t $REGISTRY_IMAGE:dev-$DATE_TAG"
|
||||
|
||||
if [ "$PUSH" = "1" ]; then
|
||||
echo ">>> 多平台构建并推送: $PLATFORMS"
|
||||
# shellcheck disable=SC2086
|
||||
docker buildx build \
|
||||
--builder "$BUILDER" \
|
||||
--platform "$PLATFORMS" \
|
||||
$TAGS \
|
||||
--cache-from type=registry,ref="$REGISTRY_IMAGE:dev" \
|
||||
--cache-to type=inline \
|
||||
-f "$DOCKERFILE" \
|
||||
. --push
|
||||
echo ">>> 已推送: $REGISTRY_IMAGE:dev (dev-$SHORT_SHA, dev-$DATE_TAG)"
|
||||
else
|
||||
HOST_ARCH=$(docker version -f '{{.Server.Arch}}')
|
||||
echo ">>> 本机架构构建并加载: linux/$HOST_ARCH"
|
||||
docker buildx build \
|
||||
--builder "$BUILDER" \
|
||||
--platform "linux/$HOST_ARCH" \
|
||||
$TAGS \
|
||||
-f "$DOCKERFILE" \
|
||||
. --load
|
||||
echo ">>> 已加载本地镜像: $REGISTRY_IMAGE:dev (dev-$SHORT_SHA, dev-$DATE_TAG)"
|
||||
fi
|
||||
Reference in New Issue
Block a user