From 10ef04d74843eba161fa66fcf1638e8f0e9fc9f9 Mon Sep 17 00:00:00 2001 From: ROOG Date: Sun, 22 Mar 2026 17:37:59 +0800 Subject: [PATCH] feat(ci): prefer pulling cloud image from compose, fallback to local build --- .gitea/workflows/deploy.yml | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index 5d134cd..67dc43f 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -27,9 +27,7 @@ jobs: NEW_COMMIT_SHA=$(git rev-parse --short HEAD) NEW_COMMIT_MSG=$(git log -1 --oneline) - FULL_IMAGE="${IMAGE_NAME}:${NEW_COMMIT_SHA}" - echo "🌐 预拉取基础镜像(带重试,避免网络抖动)..." pull_with_retry() { local image="$1" local max=5 @@ -47,17 +45,32 @@ jobs: return 1 } - pull_with_retry node:20-alpine - pull_with_retry python:3.12-slim + # 优先使用 docker-compose.yml 中配置的云端镜像 + COMPOSE_IMAGE=$(docker compose config --images | head -n 1 || true) - echo "📦 构建镜像 ${FULL_IMAGE}" - docker build --pull=false -t "${FULL_IMAGE}" . - docker tag "${FULL_IMAGE}" "${IMAGE_NAME}:latest" + if [ -n "${COMPOSE_IMAGE}" ]; then + echo "☁️ 检测到 compose 镜像: ${COMPOSE_IMAGE},优先从云端拉取" + 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 echo "📤 导入镜像到 k3s containerd..." 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 echo "🧱 应用 K8s 基础资源..."