From 853a22f388cbe47525a5bf2543f7114edd12dcf0 Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Tue, 18 Aug 2026 18:33:29 +0800 Subject: [PATCH] fix: rewrite worker-base-image.yml to use plain docker build - Remove buildx setup and cleanup steps (single platform, no need for buildx) - Replace docker_build_push.sh call with direct docker build + docker push - Fixes RPC crash: 'rpc error: code = Unavailable desc = closing transport' during buildx registry cache export - Fixes 'No such image' error: buildx --push doesn't load to local daemon - Replace buildx cleanup with simple docker rmi cleanup - Reference: api-base-image.yml uses the same approach successfully Fixes #1421 --- .gitea/workflows/worker-base-image.yml | 56 +++++++++++--------------- 1 file changed, 24 insertions(+), 32 deletions(-) diff --git a/.gitea/workflows/worker-base-image.yml b/.gitea/workflows/worker-base-image.yml index c07286aa8..20df4ac32 100644 --- a/.gitea/workflows/worker-base-image.yml +++ b/.gitea/workflows/worker-base-image.yml @@ -24,18 +24,18 @@ jobs: - name: builder dockerfile: infra/docker/worker-base-builder.Dockerfile image_name: worker-base-builder - cache_name: worker-base-builder-cache - name: runtime dockerfile: infra/docker/worker-base-runtime.Dockerfile image_name: worker-base-runtime - cache_name: worker-base-runtime-cache steps: - name: Checkout code shell: sh env: GITHUB_TOKEN: ${{ github.token }} run: | - curl -sH "Authorization: token $GITHUB_TOKEN" "${GITHUB_API_URL}/repos/${GITHUB_REPOSITORY}/raw/scripts/ci/step_checkout.sh?ref=${GITHUB_SHA}" | bash + curl -sH "Authorization: token $GITHUB_TOKEN" \ + "${GITHUB_API_URL}/repos/${GITHUB_REPOSITORY}/raw/scripts/ci/step_checkout.sh?ref=${GITHUB_SHA}" \ + | bash - name: Docker login to Registry shell: sh @@ -48,7 +48,8 @@ jobs: set -eu for i in 1 2 3; do echo "=== Docker login 尝试 $i/3 ===" - if printf '%s' "${ACR_PASSWORD}" | docker login xiaoxia-registry.cn-hangzhou.cr.aliyuncs.com -u "${ACR_USERNAME}" --password-stdin && docker login git.xiaoxiajianji.com -u "${GITEA_REGISTRY_USER}" -p "${GITEA_REGISTRY_TOKEN}"; then + if printf '%s' "${ACR_PASSWORD}" | docker login xiaoxia-registry.cn-hangzhou.cr.aliyuncs.com -u "${ACR_USERNAME}" --password-stdin \ + && docker login git.xiaoxiajianji.com -u "${GITEA_REGISTRY_USER}" -p "${GITEA_REGISTRY_TOKEN}"; then echo "✅ Docker login successful" break fi @@ -56,48 +57,39 @@ jobs: sleep 5 done - - name: Setup buildx builder - shell: sh - run: | - set -eu - BUILDER_NAME="ci-builder-${GITHUB_RUN_ID}-${{ matrix.name }}" - if ! docker buildx inspect "$BUILDER_NAME" > /dev/null 2>&1; then - docker buildx create --use --name "$BUILDER_NAME" --driver docker-container - echo "Created $BUILDER_NAME" - else - docker buildx use "$BUILDER_NAME" - echo "Using existing $BUILDER_NAME" - fi - docker buildx inspect --bootstrap - - name: Build and push base image shell: sh run: | set -eu REGISTRY="xiaoxia-registry.cn-hangzhou.cr.aliyuncs.com/xiaoxiakeji" IMAGE_TAG="${REGISTRY}/${{ matrix.image_name }}:latest" - SAFE_REF_NAME=$(echo "${GITHUB_REF_NAME}" | tr '/' '-') - CACHE_REF="${REGISTRY}/${{ matrix.cache_name }}:${SAFE_REF_NAME}" - + echo "=== Building ${{ matrix.name }} base image ===" + echo "Dockerfile: ${{ matrix.dockerfile }}" echo "Image: ${IMAGE_TAG}" - echo "Cache: ${CACHE_REF}" - - # 用通用构建脚本 - bash scripts/ci/docker_build_push.sh ${{ matrix.dockerfile }} "${IMAGE_TAG}" "${CACHE_REF}" - - # 同时推送到 Gitea Packages 作为备份(可选) + + # 使用普通 docker build(单平台不需要 buildx) + docker build \ + -f "${{ matrix.dockerfile }}" \ + -t "${IMAGE_TAG}" \ + . + + docker push "${IMAGE_TAG}" + + # 同时推送到 Gitea Packages 作为备份 GITEA_IMAGE="git.xiaoxiajianji.com/xiaoxia-saas/${{ matrix.image_name }}:latest" docker tag "${IMAGE_TAG}" "${GITEA_IMAGE}" docker push "${GITEA_IMAGE}" || echo "Gitea Packages push failed (non-fatal)" - + echo "" echo "✅ ${{ matrix.name }} base image built and pushed" - - name: Cleanup buildx builder + - name: Cleanup local images if: always() shell: sh run: | - docker buildx rm "ci-builder-${GITHUB_RUN_ID}-${{ matrix.name }}" 2>/dev/null || true - docker buildx prune -f 2>/dev/null || true - echo "Builder cleanup done" + REGISTRY="xiaoxia-registry.cn-hangzhou.cr.aliyuncs.com/xiaoxiakeji" + docker rmi "${REGISTRY}/${{ matrix.image_name }}:latest" 2>/dev/null || true + docker rmi "git.xiaoxiajianji.com/xiaoxia-saas/${{ matrix.image_name }}:latest" 2>/dev/null || true + docker image prune -f 2>/dev/null || true + echo "Image cleanup done" -- 2.54.0