6eac0b2cf2
Worker Base Image Build / Build Worker Base Images (worker-base-builder-cache, infra/docker/worker-base-builder.Dockerfile, worker-base-builder, builder) (push) Failing after 1m54s
Worker Base Image Build / Build Worker Base Images (worker-base-runtime-cache, infra/docker/worker-base-runtime.Dockerfile, worker-base-runtime, runtime) (push) Failing after 1m36s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (push) Has been skipped
CI/CD Pipeline / Check if frontend-only change (push) Has been skipped
CI/CD Pipeline / Validate - Code Quality (push) Failing after 1m29s
CI/CD Pipeline / Validate - Type Check (mypy) (push) Successful in 1m4s
CI/CD Pipeline / Validate - Migration (alembic) (push) Successful in 1m2s
CI/CD Pipeline / Unit Tests (push) Successful in 3m38s
CI/CD Pipeline / Integration Tests (push) Successful in 2m0s
CI/CD Pipeline / Frontend Lint (push) Successful in 28s
CI/CD Pipeline / Frontend Unit Tests (push) Failing after 44s
CI/CD Pipeline / PR Build API Image (push) Has been skipped
CI/CD Pipeline / PR Build Web Image (push) Has been skipped
CI/CD Pipeline / PR Build Worker Image (push) Has been skipped
CI/CD Pipeline / Build Staging API Image (push) Failing after 2m16s
CI/CD Pipeline / Build Staging Web Image (push) Successful in 8m14s
CI/CD Pipeline / Build Staging Worker Image (push) Failing after 2m0s
CI/CD Pipeline / Build Production API Image (push) Has been skipped
CI/CD Pipeline / Build Production Web Image (push) Has been skipped
CI/CD Pipeline / Build Production Worker Image (push) Has been skipped
CI/CD Pipeline / Deploy Production (push) Has been skipped
CI/CD Pipeline / Production Browser E2E (push) Has been skipped
CI/CD Pipeline / Staging E2E Tests (push) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (push) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (push) Has been skipped
同步内容: 1. CI流水线配置(ci-pipeline.yml)与develop对齐 2. PR构建脚本docker_build_only.sh增加buildx→docker build回退 3. pre-build步骤worker基础镜像构建增加buildx回退 4. 单元测试脚本全量覆盖率改为仅报告不阻塞 5. diff-cover依赖加入requirements-dev.txt 6. worker base builder/runtime Dockerfile同步 7. test_config_oss.py clear=False→clear=True修复OSS污染 8. Frontend Lint增加prettier依赖
83 lines
1.9 KiB
Bash
Executable File
83 lines
1.9 KiB
Bash
Executable File
#!/bin/bash
|
||
# PR构建专用:只构建不输出,验证Dockerfile能否正常构建
|
||
# 优先用buildx + 远程缓存,失败自动回退到普通docker build(DooD模式下buildx builder偶发崩溃)
|
||
set -eu
|
||
|
||
NO_CACHE_FLAG=""
|
||
if [ "$1" = "--no-cache" ]; then
|
||
NO_CACHE_FLAG="--no-cache"
|
||
shift
|
||
fi
|
||
|
||
DOCKERFILE="$1"
|
||
IMAGE_TAG="$2"
|
||
CACHE_REF="$3"
|
||
shift 3
|
||
BUILD_ARGS=""
|
||
for arg in "$@"; do
|
||
BUILD_ARGS="$BUILD_ARGS --build-arg $arg"
|
||
done
|
||
|
||
BUILDER_NAME="ci-pr-builder-${GITHUB_RUN_ID:-local}"
|
||
|
||
echo "=== PR Build: buildx + remote cache (attempt 1) ==="
|
||
echo "Dockerfile: ${DOCKERFILE}"
|
||
echo "Image tag: ${IMAGE_TAG}"
|
||
echo ""
|
||
|
||
# --- 尝试 buildx docker-container driver ---
|
||
if ! docker buildx inspect "$BUILDER_NAME" > /dev/null 2>&1; then
|
||
docker buildx create --use --name "$BUILDER_NAME" --driver docker-container 2>/dev/null || true
|
||
else
|
||
docker buildx use "$BUILDER_NAME" 2>/dev/null || true
|
||
fi
|
||
docker buildx inspect --bootstrap > /dev/null 2>&1 || true
|
||
|
||
set +e
|
||
docker buildx build \
|
||
$NO_CACHE_FLAG \
|
||
$BUILD_ARGS \
|
||
--cache-from "type=registry,ref=${CACHE_REF}" \
|
||
-f "${DOCKERFILE}" \
|
||
-t "${IMAGE_TAG}" \
|
||
--load \
|
||
.
|
||
BUILDX_EXIT=$?
|
||
set -e
|
||
|
||
if [ $BUILDX_EXIT -eq 0 ]; then
|
||
echo ""
|
||
echo "PR build OK (buildx): ${IMAGE_TAG}"
|
||
exit 0
|
||
fi
|
||
|
||
echo ""
|
||
echo "⚠️ buildx build失败,回退到普通docker build"
|
||
echo " 原因:buildx builder在DooD模式下偶发不稳定(graceful_stop / buildkitd.sock)"
|
||
echo ""
|
||
|
||
# 清理 buildx builder
|
||
docker buildx rm "$BUILDER_NAME" 2>/dev/null || true
|
||
|
||
# --- 回退:普通 docker build ---
|
||
# 注意:普通docker build不支持远程缓存,但更稳定
|
||
set +e
|
||
docker build \
|
||
$NO_CACHE_FLAG \
|
||
$BUILD_ARGS \
|
||
-f "${DOCKERFILE}" \
|
||
-t "${IMAGE_TAG}" \
|
||
.
|
||
DOCKER_EXIT=$?
|
||
set -e
|
||
|
||
if [ $DOCKER_EXIT -eq 0 ]; then
|
||
echo ""
|
||
echo "PR build OK (fallback docker build): ${IMAGE_TAG}"
|
||
exit 0
|
||
fi
|
||
|
||
echo ""
|
||
echo "❌ PR build failed (both buildx and docker build)"
|
||
exit 1
|