From 00522c9e9874812acee027784e15b4d442255195 Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Wed, 15 Jul 2026 11:26:53 +0800 Subject: [PATCH 1/3] =?UTF-8?q?perf(ci):=20=E6=B7=BB=E5=8A=A0mypy=E5=A2=9E?= =?UTF-8?q?=E9=87=8F=E6=89=AB=E6=8F=8F=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/ci/mypy_check.sh | 48 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 scripts/ci/mypy_check.sh diff --git a/scripts/ci/mypy_check.sh b/scripts/ci/mypy_check.sh new file mode 100644 index 000000000..fbff371eb --- /dev/null +++ b/scripts/ci/mypy_check.sh @@ -0,0 +1,48 @@ +#!/bin/bash +# mypy增量扫描脚本 - CI中调用 +# 环境变量: SCAN_MODE, CHANGED_PY_FILES + +set +e + +echo "=== Installing mypy ===" +python3 -m pip install -q mypy +mypy --version +echo "" +echo "=== Running mypy type check (advisory mode) ===" +echo "告警模式,阻断CI" +echo "" + +MYPY_COMMON_ARGS="--ignore-missing-imports --no-site-packages --no-strict-optional --explicit-package-bases --exclude tests/|test_|migrations/|alembic/ --no-error-summary --incremental --cache-dir .mypy_cache" + +EXIT_CODE=0 + +if [ "$SCAN_MODE" = "incremental" ] && [ -n "$CHANGED_PY_FILES" ]; then + echo "=== Incremental mypy scan (PR mode) ===" + echo "Changed files: $(echo $CHANGED_PY_FILES | wc -w) files" + MYPY_FILES="" + for f in $CHANGED_PY_FILES; do + case "$f" in + apps/*|packages/*) + MYPY_FILES="$MYPY_FILES $f" + ;; + esac + done + if [ -n "$MYPY_FILES" ]; then + echo "Checking: $MYPY_FILES" + mypy $MYPY_FILES $MYPY_COMMON_ARGS 2>&1 | head -80 || EXIT_CODE=$? + else + echo "No mypy-checkable files changed, skipping" + fi +else + echo "=== Full mypy scan ===" + mypy apps/api/app packages $MYPY_COMMON_ARGS 2>&1 | head -60 || EXIT_CODE=$? +fi + +echo "" +if [ "$EXIT_CODE" != "0" ]; then + echo "mypy 发现类型问题(告警模式,阻断)" + echo "建议后续逐步修复" +else + echo "mypy 类型检查通过" +fi +exit 0 -- 2.54.0 From 7a0f1537af66e25f79c366cd4c26afbc599e6cc7 Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Wed, 15 Jul 2026 11:27:43 +0800 Subject: [PATCH 2/3] =?UTF-8?q?perf(ci):=20mypy=E5=A2=9E=E9=87=8F=E6=89=AB?= =?UTF-8?q?=E6=8F=8F=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/ci-cd.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/ci-cd.yml b/.gitea/workflows/ci-cd.yml index f21055528..1fa0e4d4c 100755 --- a/.gitea/workflows/ci-cd.yml +++ b/.gitea/workflows/ci-cd.yml @@ -103,7 +103,7 @@ jobs: - name: Type check (mypy, advisory mode) if: always() shell: sh - run: "set +e\necho \"=== Installing mypy ===\"\npython3 -m pip install -q mypy\nmypy --version\necho \"\"\necho \"=== Running mypy type check (advisory mode) ===\"\necho \"告警模式,不阻断CI\"\necho \"\"\n# 只检查核心业务代码,跳过测试和迁移\nEXIT_CODE=0\nmypy apps/api/app packages --ignore-missing-imports --no-site-packages --no-strict-optional --explicit-package-bases --exclude 'tests/|test_|migrations/|alembic/' --no-error-summary 2>&1 | head -60 || EXIT_CODE=$?\necho \"\"\nif [ \"$EXIT_CODE\" != \"0\" ]; then\n echo \"mypy 发现类型问题(告警模式,不阻断)\"\n echo \"建议后续逐步修复\"\nelse\n echo \"mypy 类型检查通过 ✅\"\nfi\nexit 0\n" + run: "bash scripts/ci/mypy_check.sh" - name: Run security scan (bandit) shell: sh run: 'set -eu -- 2.54.0 From 53e570a903f18118c96a6e5d76b8efb677668fb3 Mon Sep 17 00:00:00 2001 From: CI Bot Date: Wed, 15 Jul 2026 23:01:15 +0800 Subject: [PATCH 3/3] =?UTF-8?q?fix(ci):=20ruff=E6=8E=92=E9=99=A4hostexecut?= =?UTF-8?q?or=E7=9B=AE=E5=BD=95=20-=20=E9=81=BF=E5=85=8Dhost=20executor?= =?UTF-8?q?=E6=A8=A1=E5=BC=8F=E4=B8=8B=E6=89=AB=E5=88=B0runner=E8=84=9A?= =?UTF-8?q?=E6=9C=AC=E7=9B=AE=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index 00d33b71f..06003dc3b 100755 --- a/pyproject.toml +++ b/pyproject.toml @@ -63,6 +63,7 @@ exclude = [ ".next", "dist", "build", + "hostexecutor", ] [tool.ruff.lint] -- 2.54.0