From c57be3e47dbc54defc121e87c12a0452340dd386 Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Tue, 18 Aug 2026 17:43:37 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20api-base-image=20workflow=20=E6=94=B9?= =?UTF-8?q?=E7=94=A8=E6=99=AE=E9=80=9A=20docker=20build=20=E9=81=BF?= =?UTF-8?q?=E5=85=8D=20buildx=20push=20=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit buildx --push 后镜像不在本地 daemon,导致后续 tag 失败。 改用普通 docker build + docker push 分步执行,更稳定可靠。 --- .gitea/workflows/api-base-image.yml | 56 ++++++++++++----------------- 1 file changed, 23 insertions(+), 33 deletions(-) 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"