diff --git a/.gitea/workflows/api-base-image.yml b/.gitea/workflows/api-base-image.yml index e8b676884..41770e936 100644 --- a/.gitea/workflows/api-base-image.yml +++ b/.gitea/workflows/api-base-image.yml @@ -15,7 +15,7 @@ jobs: build-api-base: name: Build API Base Image runs-on: runtime-builder - timeout-minutes: 30 + timeout-minutes: 45 steps: - name: Checkout code shell: sh @@ -50,45 +50,35 @@ jobs: shell: sh run: | set -eu - REGISTRY="xiaoxia-registry.cn-hangzhou.cr.aliyuncs.com/xiaoxiakeji" - IMAGE_TAG="${REGISTRY}/saas-api-base:latest" + ACR_IMAGE="xiaoxia-registry.cn-hangzhou.cr.aliyuncs.com/xiaoxiakeji/saas-api-base:latest" + GITEA_IMAGE="git.xiaoxiajianji.com/xiaoxia-saas/saas-api-base:latest" - echo "=== Building API base image (no registry cache, local cache only) ===" - echo "Image: ${IMAGE_TAG}" + echo "=== Building API base image ===" - # 使用本地缓存,避免 registry cache 导出导致 buildx 崩溃 - LOCAL_CACHE="/tmp/buildx-cache/api-base-local" - mkdir -p "$LOCAL_CACHE" - - # 创建或使用已有 builder - if ! docker buildx inspect api-base-builder > /dev/null 2>&1; then - docker buildx create --use --name api-base-builder --driver docker-container - else - docker buildx use api-base-builder - fi - docker buildx inspect --bootstrap - - # 构建并推送(仅使用本地缓存,不使用 registry cache) - docker buildx build \ - --platform linux/amd64 \ - --cache-from "type=local,src=${LOCAL_CACHE}" \ - --cache-to "type=local,dest=${LOCAL_CACHE},mode=max" \ + # 使用普通 docker build(单平台不需要 buildx) + docker build \ -f infra/docker/api-base.Dockerfile \ - -t "${IMAGE_TAG}" \ - --push \ + -t "${ACR_IMAGE}" \ . - # 同时推送到 Gitea Packages 作为备份 - GITEA_IMAGE="git.xiaoxiajianji.com/xiaoxia-saas/saas-api-base:latest" - docker tag "${IMAGE_TAG}" "${GITEA_IMAGE}" - docker push "${GITEA_IMAGE}" || echo "Gitea Packages push failed (non-fatal)" - echo "" - echo "✅ API base image built and pushed: ${IMAGE_TAG}" + echo "✅ Image built successfully" - - name: Cleanup builder + # 推送到 ACR + echo "=== Pushing to ACR ===" + docker push "${ACR_IMAGE}" + echo "✅ Pushed to ACR" + + # 打标签并推送到 Gitea Packages 作为备份 + echo "=== Pushing to Gitea Packages ===" + docker tag "${ACR_IMAGE}" "${GITEA_IMAGE}" + docker push "${GITEA_IMAGE}" || echo "⚠️ Gitea Packages push failed (non-fatal)" + echo "✅ Gitea backup push completed" + + - name: Cleanup if: always() shell: sh run: | - docker buildx rm api-base-builder 2>/dev/null || true - echo "Builder cleanup done" + ACR_IMAGE="xiaoxia-registry.cn-hangzhou.cr.aliyuncs.com/xiaoxiakeji/saas-api-base:latest" + docker rmi "${ACR_IMAGE}" 2>/dev/null || true + echo "Cleanup done"