diff --git a/.gitea/workflows/ci-pipeline.yml b/.gitea/workflows/ci-pipeline.yml index c2545a97e..535f49e97 100755 --- a/.gitea/workflows/ci-pipeline.yml +++ b/.gitea/workflows/ci-pipeline.yml @@ -22,7 +22,8 @@ permissions: contents: read concurrency: group: ci-pipeline-${{ gitea.event_name }}-${{ gitea.ref }} - cancel-in-progress: true + # PR事件取消进行中的旧run,push事件不取消(确保完整CI跑完) + cancel-in-progress: ${{ gitea.event_name == 'pull_request' }} jobs: check-frontend-only: name: Check if frontend-only change diff --git a/scripts/ci/auto_approve.sh b/scripts/ci/auto_approve.sh index 0c4f94bc8..5736898f1 100644 --- a/scripts/ci/auto_approve.sh +++ b/scripts/ci/auto_approve.sh @@ -32,6 +32,11 @@ else "CI/CD Pipeline / Validate - Type Check (mypy) (pull_request)" "CI/CD Pipeline / Validate - Migration (alembic) (pull_request)" "CI/CD Pipeline / Frontend Lint (pull_request)" + "CI/CD Pipeline / Unit Tests (pull_request)" + "CI/CD Pipeline / Frontend Unit Tests (pull_request)" + "CI/CD Pipeline / PR Build API Image (pull_request)" + "CI/CD Pipeline / PR Build Web Image (pull_request)" + "CI/CD Pipeline / PR Build Worker Image (pull_request)" ) fi diff --git a/scripts/ci/auto_merge.sh b/scripts/ci/auto_merge.sh index 3b36f3b74..d251b9820 100644 --- a/scripts/ci/auto_merge.sh +++ b/scripts/ci/auto_merge.sh @@ -32,6 +32,11 @@ else "CI/CD Pipeline / Validate - Type Check (mypy) (pull_request)" "CI/CD Pipeline / Validate - Migration (alembic) (pull_request)" "CI/CD Pipeline / Frontend Lint (pull_request)" + "CI/CD Pipeline / Unit Tests (pull_request)" + "CI/CD Pipeline / Frontend Unit Tests (pull_request)" + "CI/CD Pipeline / PR Build API Image (pull_request)" + "CI/CD Pipeline / PR Build Web Image (pull_request)" + "CI/CD Pipeline / PR Build Worker Image (pull_request)" ) echo "检查required门禁(与分支保护一致)" fi diff --git a/scripts/ci/run_unit_tests.sh b/scripts/ci/run_unit_tests.sh index 146798a3b..f6613c8c1 100755 --- a/scripts/ci/run_unit_tests.sh +++ b/scripts/ci/run_unit_tests.sh @@ -42,6 +42,9 @@ for i in 1 2 3; do done pytest --version +# 双保险:确保numpy已安装 +python3 -m pip install -q numpy==1.26.4 || true + # --- 增量测试选择(仅PR) --- UNIT_TEST_MODE="full" SELECTED_TEST_FILES="tests/unit" @@ -75,7 +78,7 @@ echo "=== 运行单元测试 (模式: $UNIT_TEST_MODE) ===" if [ "$UNIT_TEST_MODE" = "incremental" ]; then echo "=== 增量测试模式 ===" - PYTHONPATH="$PWD/apps/api:$PWD/apps/worker:$PWD" python3 -m coverage run \ + PYTHONPATH="$PWD/apps/api:$PWD/apps/worker:$PWD/packages:$PWD" python3 -m coverage run \ --source=apps/api/app,apps/worker/worker_app,packages \ --omit="*/migrations/*,*/tests/*,*/test_*.py,*/site-packages/*" \ --branch \ @@ -84,7 +87,7 @@ if [ "$UNIT_TEST_MODE" = "incremental" ]; then python3 -m coverage xml -o coverage.xml python3 -m coverage report --fail-under=10 > /dev/null || true else - PYTHONPATH="$PWD/apps/api:$PWD/apps/worker:$PWD" python3 -m coverage run \ + PYTHONPATH="$PWD/apps/api:$PWD/apps/worker:$PWD/packages:$PWD" python3 -m coverage run \ --source=apps/api/app,apps/worker/worker_app,packages \ --omit="*/migrations/*,*/tests/*,*/test_*.py,*/site-packages/*" \ --branch \