Files
xiaoxia-saas/scripts/ci/validate_style.sh
T
xiaoxia 4ae6394c95
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (push) Successful in 1s
CI/CD Pipeline / Check push changed paths (push) Failing after 2s
CI/CD Pipeline / Validate - Style (push) Successful in 3m52s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 4m19s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 4m41s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 5m18s
CI/CD Pipeline / Validate - Python (mypy + alembic) (push) Successful in 5m12s
CI/CD Pipeline / Validate - Security (push) Failing after 5m19s
CI/CD Pipeline / Frontend Unit Tests (push) Successful in 5m19s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 8m42s
CI/CD Pipeline / Integration Tests (push) Successful in 6m59s
AI Code Review / AI Code Review (pull_request) Successful in 9m14s
CI/CD Pipeline / Unit Tests (push) Successful in 20m36s
CI/CD Pipeline / Production Browser E2E (push) Failing after 380h7m40s
CI/CD Pipeline / Canary Release to Production (push) Failing after 380h7m44s
CI/CD Pipeline / Deploy Production (push) Failing after 380h7m44s
CI/CD Pipeline / CI Gate (push) Failing after 380h7m48s
CI/CD Pipeline / Build Production Worker Image (push) Failing after 380h7m50s
CI/CD Pipeline / Build Production Web Image (push) Failing after 380h7m52s
CI/CD Pipeline / Build Production API Image (push) Failing after 380h7m54s
CI/CD Pipeline / ACR Image Cleanup (push) Failing after 380h17m5s
CI/CD Pipeline / Staging E2E Tests (push) Failing after 380h17m7s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (push) Failing after 380h20m5s
CI/CD Pipeline / Retag skipped Staging Worker Image (push) Failing after 380h25m2s
CI/CD Pipeline / Retag skipped Staging Web Image (push) Failing after 380h25m3s
CI/CD Pipeline / Retag skipped Staging API Image (push) Failing after 380h25m5s
CI/CD Pipeline / Build Staging Worker Image (push) Failing after 380h27m22s
CI/CD Pipeline / Build Staging Web Image (push) Failing after 380h27m24s
CI/CD Pipeline / PR Build Worker Image (push) Failing after 380h27m26s
CI/CD Pipeline / PR Build Web Image (push) Failing after 380h27m26s
CI/CD Pipeline / Frontend Lint (push) Failing after 380h27m28s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Failing after 380h30m27s
CI/CD Pipeline / Check if frontend-only change (push) Failing after 380h30m31s
CI/CD Pipeline / Staging API Integration Tests (push) Failing after 380h51m18s
CI/CD Pipeline / Build Staging API Image (push) Failing after 381h1m37s
CI/CD Pipeline / PR Build API Image (push) Failing after 381h1m41s
CI/CD Pipeline / Staging E2E Tests (pull_request) Failing after 381h28m33s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 2m51s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 51s
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Successful in 4s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 3s
CI/CD Pipeline / Validate - Style (pull_request) Successful in 6m57s
CI/CD Pipeline / Validate - Security (pull_request) Successful in 9m58s
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Successful in 5m58s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 17m20s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 7m40s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Failing after 381h32m3s
CI/CD Pipeline / Build Production Web Image (pull_request) Failing after 381h15m34s
CI/CD Pipeline / Retag skipped Staging Web Image (pull_request) Failing after 381h28m53s
CI/CD Pipeline / Build Staging Web Image (pull_request) Failing after 381h29m8s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Failing after 380h54m22s
CI/CD Pipeline / Retag skipped Staging Worker Image (pull_request) Failing after 380h54m38s
CI/CD Pipeline / Retag skipped Staging API Image (pull_request) Failing after 380h54m42s
CI/CD Pipeline / Build Staging Worker Image (pull_request) Failing after 380h54m55s
CI/CD Pipeline / Build Staging API Image (pull_request) Failing after 380h54m57s
CI/CD Pipeline / Canary Release to Production (pull_request) Failing after 381h15m33s
CI/CD Pipeline / CI Gate (pull_request) Successful in 1s
CI/CD Pipeline / Production Browser E2E (pull_request) Failing after 380h41m19s
CI/CD Pipeline / Deploy Production (pull_request) Failing after 380h41m20s
CI/CD Pipeline / Build Production API Image (pull_request) Failing after 380h41m21s
CI/CD Pipeline / ACR Image Cleanup (pull_request) Failing after 380h54m16s
CI/CD Pipeline / Staging API Integration Tests (pull_request) Failing after 380h54m18s
CI/CD Pipeline / PR Build Web Image (pull_request) Failing after 380h55m22s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 380h57m52s
CI/CD Pipeline / Check push changed paths (pull_request) Failing after 380h59m58s
CI/CD Pipeline / Build Production Worker Image (pull_request) Failing after 380h41m20s
ci: batch2 speedup - merge validate-type-check+migration into validate-python, split validate-code-quality into validate-style+validate-security
Change 5: Merge validate-type-check + validate-migration into validate-python
- Single checkout + single pip install → mypy + alembic
- Saves ~2min checkout + ~1min pip install + 1 runner slot
- Preserves DATABASE_URL env for alembic migration validation

Change 6: Split validate-code-quality into validate-style + validate-security
- validate-style: compileall + black/isort/ruff + vulture (advisory) + auto-fix (~3min)
- validate-security: detect-secrets + bandit (advisory) + pip-audit (advisory) + CI scripts syntax (~5min)
- Both jobs run in parallel, reducing wall-clock time from ~10min to ~5min

Updated references:
- ci-gate needs: validate-code-quality → validate-style + validate-security
- ci-gate needs: validate-type-check + validate-migration → validate-python
- build-production needs: validate-code-quality → validate-style + validate-security
- Removed obsolete scripts/ci/validate_code_quality.sh
2026-08-31 18:25:00 +08:00

43 lines
1.5 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# CI Validate: 代码风格检查(validate-style)
# 包含:Python 字节码编译、black 格式、isort 排序、ruff lint、vulture 死代码(仅告警)
set -eu
echo "=== CI Validate: 代码风格检查 ==="
# --- Python 字节码编译 ---
echo ""
echo "=== [1/3] Python bytecode compilation ==="
python3 -m compileall -q alembic apps packages tests scripts
echo "✅ Bytecode compilation passed"
# --- 代码格式检查(全量)---
echo ""
echo "=== [2/3] Code formatting (black + isort + ruff) ==="
echo "Full scan mode"
python3 -m black --check --fast alembic apps packages tests scripts
python3 -m isort --check-only alembic apps packages tests scripts
python3 -m ruff check apps packages tests --statistics
echo "✅ Code formatting checks passed"
# --- Vulture 死代码检测(仅告警)---
echo ""
echo "=== [3/3] Dead code detection (vulture, advisory only) ==="
set +e
python3 -m pip install -q vulture
vulture --version
echo "告警模式,不阻断CI。置信度>=90%建议尽快确认。"
echo ""
vulture apps packages scripts \
--exclude "tests,test,migrations,.gitea,docs,node_modules,site-packages,*/test_*.py,*/conftest.py" \
--min-confidence 70 \
2>&1 | sort -t'(' -k2 -rn | head -80
echo ""
echo "=== vulture scan summary ==="
echo "发现潜在死代码(可能包含框架装饰器注册的函数,为误报)"
echo "建议:定期人工审查高置信度(>=90%)条目"
set -e
echo ""
echo "=== CI Validate: 代码风格检查 全部通过 ✅ ==="