feat(ci): prefer pulling cloud image from compose, fallback to local build
Some checks failed
Deploy Noval to K3s / deploy (push) Has been cancelled

This commit is contained in:
2026-03-22 17:37:59 +08:00
parent 6fb4635c21
commit 10ef04d748

View File

@@ -27,9 +27,7 @@ jobs:
NEW_COMMIT_SHA=$(git rev-parse --short HEAD) NEW_COMMIT_SHA=$(git rev-parse --short HEAD)
NEW_COMMIT_MSG=$(git log -1 --oneline) NEW_COMMIT_MSG=$(git log -1 --oneline)
FULL_IMAGE="${IMAGE_NAME}:${NEW_COMMIT_SHA}"
echo "🌐 预拉取基础镜像(带重试,避免网络抖动)..."
pull_with_retry() { pull_with_retry() {
local image="$1" local image="$1"
local max=5 local max=5
@@ -47,17 +45,32 @@ jobs:
return 1 return 1
} }
pull_with_retry node:20-alpine # 优先使用 docker-compose.yml 中配置的云端镜像
pull_with_retry python:3.12-slim COMPOSE_IMAGE=$(docker compose config --images | head -n 1 || true)
echo "📦 构建镜像 ${FULL_IMAGE}" if [ -n "${COMPOSE_IMAGE}" ]; then
docker build --pull=false -t "${FULL_IMAGE}" . echo "☁️ 检测到 compose 镜像: ${COMPOSE_IMAGE},优先从云端拉取"
docker tag "${FULL_IMAGE}" "${IMAGE_NAME}:latest" pull_with_retry "${COMPOSE_IMAGE}"
FULL_IMAGE="${COMPOSE_IMAGE}"
else
FULL_IMAGE="${IMAGE_NAME}:${NEW_COMMIT_SHA}"
echo " compose 未配置 image回退本地构建模式"
echo "🌐 预拉取基础镜像(带重试,避免网络抖动)..."
pull_with_retry node:20-alpine
pull_with_retry python:3.12-slim
echo "📦 构建镜像 ${FULL_IMAGE}"
docker build --pull=false -t "${FULL_IMAGE}" .
docker tag "${FULL_IMAGE}" "${IMAGE_NAME}:latest"
fi
if command -v k3s >/dev/null 2>&1; then if command -v k3s >/dev/null 2>&1; then
echo "📤 导入镜像到 k3s containerd..." echo "📤 导入镜像到 k3s containerd..."
docker save "${FULL_IMAGE}" | k3s ctr images import - docker save "${FULL_IMAGE}" | k3s ctr images import -
docker save "${IMAGE_NAME}:latest" | k3s ctr images import - if docker image inspect "${IMAGE_NAME}:latest" >/dev/null 2>&1; then
docker save "${IMAGE_NAME}:latest" | k3s ctr images import -
fi
fi fi
echo "🧱 应用 K8s 基础资源..." echo "🧱 应用 K8s 基础资源..."