diff --git a/.gitea/workflows/ci-pipeline.yml b/.gitea/workflows/ci-pipeline.yml index f86aebc26..12c247b0b 100755 --- a/.gitea/workflows/ci-pipeline.yml +++ b/.gitea/workflows/ci-pipeline.yml @@ -641,11 +641,40 @@ jobs: # 构建builder基础镜像 echo "构建 worker-base-builder..." - docker build -f infra/docker/worker-base-builder.Dockerfile -t "$BASE_BUILDER" . + # 用buildx docker-container驱动构建(兼容DooD模式:普通docker build看不到容器内文件) + BUILDER_NAME="ci-pr-builder-${GITHUB_RUN_ID:-local}" + if ! docker buildx inspect "$BUILDER_NAME" > /dev/null 2>&1; then + docker buildx create --use --name "$BUILDER_NAME" --driver docker-container + else + docker buildx use "$BUILDER_NAME" + fi + docker buildx inspect --bootstrap > /dev/null 2>&1 + + # 构建builder基础镜像(带重试,buildx容器偶发不稳定) + echo "构建 worker-base-builder..." + for attempt in 1 2 3; do + if docker buildx build --load -f infra/docker/worker-base-builder.Dockerfile -t "$BASE_BUILDER" .; then + echo "worker-base-builder 构建成功" + break + fi + echo "worker-base-builder 构建失败,重试 $attempt/3..." + docker buildx rm "$BUILDER_NAME" 2>/dev/null || true + docker buildx create --use --name "$BUILDER_NAME" --driver docker-container + sleep 3 + done # 构建runtime基础镜像 echo "构建 worker-base-runtime..." - docker build -f infra/docker/worker-base-runtime.Dockerfile -t "$BASE_RUNTIME" . + for attempt in 1 2 3; do + if docker buildx build --load -f infra/docker/worker-base-runtime.Dockerfile -t "$BASE_RUNTIME" .; then + echo "worker-base-runtime 构建成功" + break + fi + echo "worker-base-runtime 构建失败,重试 $attempt/3..." + docker buildx rm "$BUILDER_NAME" 2>/dev/null || true + docker buildx create --use --name "$BUILDER_NAME" --driver docker-container + sleep 3 + done echo "fallback=true" >> $GITHUB_OUTPUT echo "基础镜像本地构建完成" diff --git a/infra/docker/worker.Dockerfile b/infra/docker/worker.Dockerfile index d00043021..beb15a399 100755 --- a/infra/docker/worker.Dockerfile +++ b/infra/docker/worker.Dockerfile @@ -11,7 +11,7 @@ # - requirements-base.txt 全部依赖 # - requirements-worker.txt 全部依赖 (numpy/scipy/opencv) # - 预strip的.so文件 -FROM git.xiaoxiajianji.com/xiaoxia-saas/worker-base-builder:latest AS builder +FROM xiaoxia-registry.cn-hangzhou.cr.aliyuncs.com/xiaoxiakeji/worker-base-builder:latest AS builder ENV PATH="/opt/venv/bin:$PATH" @@ -33,7 +33,7 @@ RUN find /opt/venv -type d -name "__pycache__" -exec rm -rf {} + 2>/dev/null; \ # 从预构建的runtime基础镜像开始,已经包含: # - ffmpeg # - libglib2.0-0 -FROM git.xiaoxiajianji.com/xiaoxia-saas/worker-base-runtime:latest AS runtime +FROM xiaoxia-registry.cn-hangzhou.cr.aliyuncs.com/xiaoxiakeji/worker-base-runtime:latest AS runtime # 构建参数:版本号 ARG APP_VERSION=dev diff --git a/scripts/ci/step_timer_start.sh b/scripts/ci/step_timer_start.sh index 503143a6d..b53accb82 100755 --- a/scripts/ci/step_timer_start.sh +++ b/scripts/ci/step_timer_start.sh @@ -2,4 +2,5 @@ # CI 公共步骤:Job 开始计时 echo "JOB_START_TIME=$(date +%s)" >> $GITHUB_ENV echo "Job started at $(date)" -# trigger CI run for PR validation \ No newline at end of file +# trigger CI run for PR validation +# trigger CI - worker dood fallback fix test \ No newline at end of file