fix(ci): 安全/风格检查 pip install 加固——防缓存损坏导致 CI 失败
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (push) Has been cancelled
CI/CD Pipeline / Check if frontend-only change (push) Has been cancelled
CI/CD Pipeline / Validate - Style (push) Has been cancelled
CI/CD Pipeline / Validate - Security (push) Has been cancelled
CI/CD Pipeline / Validate - Python (mypy + alembic) (push) Has been cancelled
CI/CD Pipeline / Unit Tests (push) Has been cancelled
CI/CD Pipeline / Integration Tests (push) Has been cancelled
CI/CD Pipeline / Frontend Lint (push) Has been cancelled
CI/CD Pipeline / Frontend Unit Tests (push) Has been cancelled
CI/CD Pipeline / PR Build API Image (push) Has been cancelled
CI/CD Pipeline / PR Build Web Image (push) Has been cancelled
CI/CD Pipeline / PR Build Worker Image (push) Has been cancelled
CI/CD Pipeline / Check push changed paths (push) Has been cancelled
CI/CD Pipeline / Build Staging API Image (push) Has been cancelled
CI/CD Pipeline / Build Staging Web Image (push) Has been cancelled
CI/CD Pipeline / Build Staging Worker Image (push) Has been cancelled
CI/CD Pipeline / Retag skipped Staging API Image (push) Has been cancelled
CI/CD Pipeline / Retag skipped Staging Web Image (push) Has been cancelled
CI/CD Pipeline / Retag skipped Staging Worker Image (push) Has been cancelled
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (push) Has been cancelled
CI/CD Pipeline / Staging E2E Tests (push) Has been cancelled
CI/CD Pipeline / Staging API Integration Tests (push) Has been cancelled
CI/CD Pipeline / Build Production API Image (push) Has been cancelled
CI/CD Pipeline / Build Production Web Image (push) Has been cancelled
CI/CD Pipeline / Build Production Worker Image (push) Has been cancelled
CI/CD Pipeline / Deploy Production (push) Has been cancelled
CI/CD Pipeline / Production Browser E2E (push) Has been cancelled
CI/CD Pipeline / ACR Image Cleanup (push) Has been cancelled
CI/CD Pipeline / Canary Release to Production (push) Has been cancelled
CI/CD Pipeline / CI Gate (push) Has been cancelled
AI Code Review / AI Code Review (pull_request) Has been cancelled
PR Automation / Auto Approve on CI Green (pull_request) Has been cancelled
PR Automation / Auto Merge on CI Green + Approved (pull_request) Has been cancelled
Preview Deploy / Deploy Preview Environment (pull_request) Has been cancelled
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 5m45s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 6m8s
CI/CD Pipeline / Production Browser E2E (pull_request) Failing after 378h20m1s
CI/CD Pipeline / Canary Release to Production (pull_request) Failing after 378h20m2s
CI/CD Pipeline / Build Production Web Image (pull_request) Failing after 378h20m3s
CI/CD Pipeline / Build Production API Image (pull_request) Failing after 378h20m4s
CI/CD Pipeline / Deploy Production (pull_request) Failing after 378h20m2s
CI/CD Pipeline / ACR Image Cleanup (pull_request) Failing after 378h50m49s
CI/CD Pipeline / Staging API Integration Tests (pull_request) Failing after 378h50m50s
CI/CD Pipeline / Staging E2E Tests (pull_request) Failing after 378h50m51s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Failing after 378h50m59s
CI/CD Pipeline / Retag skipped Staging Worker Image (pull_request) Failing after 378h51m37s
CI/CD Pipeline / Retag skipped Staging Web Image (pull_request) Failing after 378h51m39s
CI/CD Pipeline / Retag skipped Staging API Image (pull_request) Failing after 378h51m41s
CI/CD Pipeline / Build Staging Worker Image (pull_request) Failing after 378h57m55s
CI/CD Pipeline / PR Build Web Image (pull_request) Failing after 378h58m33s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Failing after 378h59m30s
CI/CD Pipeline / Build Staging Web Image (pull_request) Failing after 378h57m57s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 378h59m32s
CI/CD Pipeline / Check push changed paths (pull_request) Failing after 379h3m52s
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Successful in 2s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 1s
CI/CD Pipeline / Validate - Style (pull_request) Successful in 9m1s
CI/CD Pipeline / Validate - Security (pull_request) Successful in 27m46s
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Successful in 12m29s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 40m34s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 33m58s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 54s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 31s
CI/CD Pipeline / CI Gate (pull_request) Successful in 1s
CI/CD Pipeline / Build Production Worker Image (pull_request) Failing after 378h54m16s
CI/CD Pipeline / Build Staging API Image (pull_request) Failing after 379h32m12s
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (push) Has been cancelled
CI/CD Pipeline / Check if frontend-only change (push) Has been cancelled
CI/CD Pipeline / Validate - Style (push) Has been cancelled
CI/CD Pipeline / Validate - Security (push) Has been cancelled
CI/CD Pipeline / Validate - Python (mypy + alembic) (push) Has been cancelled
CI/CD Pipeline / Unit Tests (push) Has been cancelled
CI/CD Pipeline / Integration Tests (push) Has been cancelled
CI/CD Pipeline / Frontend Lint (push) Has been cancelled
CI/CD Pipeline / Frontend Unit Tests (push) Has been cancelled
CI/CD Pipeline / PR Build API Image (push) Has been cancelled
CI/CD Pipeline / PR Build Web Image (push) Has been cancelled
CI/CD Pipeline / PR Build Worker Image (push) Has been cancelled
CI/CD Pipeline / Check push changed paths (push) Has been cancelled
CI/CD Pipeline / Build Staging API Image (push) Has been cancelled
CI/CD Pipeline / Build Staging Web Image (push) Has been cancelled
CI/CD Pipeline / Build Staging Worker Image (push) Has been cancelled
CI/CD Pipeline / Retag skipped Staging API Image (push) Has been cancelled
CI/CD Pipeline / Retag skipped Staging Web Image (push) Has been cancelled
CI/CD Pipeline / Retag skipped Staging Worker Image (push) Has been cancelled
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (push) Has been cancelled
CI/CD Pipeline / Staging E2E Tests (push) Has been cancelled
CI/CD Pipeline / Staging API Integration Tests (push) Has been cancelled
CI/CD Pipeline / Build Production API Image (push) Has been cancelled
CI/CD Pipeline / Build Production Web Image (push) Has been cancelled
CI/CD Pipeline / Build Production Worker Image (push) Has been cancelled
CI/CD Pipeline / Deploy Production (push) Has been cancelled
CI/CD Pipeline / Production Browser E2E (push) Has been cancelled
CI/CD Pipeline / ACR Image Cleanup (push) Has been cancelled
CI/CD Pipeline / Canary Release to Production (push) Has been cancelled
CI/CD Pipeline / CI Gate (push) Has been cancelled
AI Code Review / AI Code Review (pull_request) Has been cancelled
PR Automation / Auto Approve on CI Green (pull_request) Has been cancelled
PR Automation / Auto Merge on CI Green + Approved (pull_request) Has been cancelled
Preview Deploy / Deploy Preview Environment (pull_request) Has been cancelled
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 5m45s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 6m8s
CI/CD Pipeline / Production Browser E2E (pull_request) Failing after 378h20m1s
CI/CD Pipeline / Canary Release to Production (pull_request) Failing after 378h20m2s
CI/CD Pipeline / Build Production Web Image (pull_request) Failing after 378h20m3s
CI/CD Pipeline / Build Production API Image (pull_request) Failing after 378h20m4s
CI/CD Pipeline / Deploy Production (pull_request) Failing after 378h20m2s
CI/CD Pipeline / ACR Image Cleanup (pull_request) Failing after 378h50m49s
CI/CD Pipeline / Staging API Integration Tests (pull_request) Failing after 378h50m50s
CI/CD Pipeline / Staging E2E Tests (pull_request) Failing after 378h50m51s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Failing after 378h50m59s
CI/CD Pipeline / Retag skipped Staging Worker Image (pull_request) Failing after 378h51m37s
CI/CD Pipeline / Retag skipped Staging Web Image (pull_request) Failing after 378h51m39s
CI/CD Pipeline / Retag skipped Staging API Image (pull_request) Failing after 378h51m41s
CI/CD Pipeline / Build Staging Worker Image (pull_request) Failing after 378h57m55s
CI/CD Pipeline / PR Build Web Image (pull_request) Failing after 378h58m33s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Failing after 378h59m30s
CI/CD Pipeline / Build Staging Web Image (pull_request) Failing after 378h57m57s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 378h59m32s
CI/CD Pipeline / Check push changed paths (pull_request) Failing after 379h3m52s
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Successful in 2s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 1s
CI/CD Pipeline / Validate - Style (pull_request) Successful in 9m1s
CI/CD Pipeline / Validate - Security (pull_request) Successful in 27m46s
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Successful in 12m29s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 40m34s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 33m58s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 54s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 31s
CI/CD Pipeline / CI Gate (pull_request) Successful in 1s
CI/CD Pipeline / Build Production Worker Image (pull_request) Failing after 378h54m16s
CI/CD Pipeline / Build Staging API Image (pull_request) Failing after 379h32m12s
问题:Gitea Actions cache 返回损坏归档时(cache EOF/deserialization failed), pip install pip-audit/detect-secrets/vulture 因 hash mismatch 直接 exit 1, 导致 validate-security/validate-style 整体失败。 修复: - detect-secrets/pip-audit/vulture 安装加 --no-cache-dir - pip-audit 安装失败后 graceful skip(本身是 advisory-only) - detect-secrets 安装失败后重试一次 --no-binary - vulture 安装失败后 skip 死代码检测(本身是 advisory-only)
This commit was merged in pull request #1584.
This commit is contained in:
@@ -8,7 +8,13 @@ echo "=== CI Validate: 安全扫描 ==="
|
||||
# --- 密钥检测 ---
|
||||
echo ""
|
||||
echo "=== [1/4] Secret detection (detect-secrets) ==="
|
||||
python3 -m pip install -q detect-secrets
|
||||
python3 -m pip install -q --no-cache-dir detect-secrets || {
|
||||
echo "⚠️ detect-secrets install failed, retrying without cache..."
|
||||
python3 -m pip install -q --no-cache-dir --no-binary :all: detect-secrets || {
|
||||
echo "❌ detect-secrets install failed after retry"
|
||||
exit 1
|
||||
}
|
||||
}
|
||||
detect-secrets --version
|
||||
|
||||
detect-secrets scan \
|
||||
@@ -72,17 +78,27 @@ fi
|
||||
# --- Pip-audit 依赖漏洞扫描(仅告警)---
|
||||
echo ""
|
||||
echo "=== [3/4] Python dependency vulnerability scan (pip-audit, advisory only) ==="
|
||||
python3 -m pip install -q pip-audit
|
||||
pip-audit --version
|
||||
EXIT_CODE=0
|
||||
for req_file in requirements.txt requirements-base.txt requirements-dev.txt; do
|
||||
if [ -f "$req_file" ]; then
|
||||
echo "--- Scanning $req_file ---"
|
||||
pip-audit -r "$req_file" --desc on 2>&1 | head -40 || EXIT_CODE=$?
|
||||
echo ""
|
||||
fi
|
||||
done
|
||||
echo "pip-audit scan completed (advisory mode - warnings only, not blocking CI)"
|
||||
python3 -m pip install -q --no-cache-dir pip-audit || {
|
||||
echo "⚠️ pip-audit install failed (cache issue?), retrying..."
|
||||
python3 -m pip install -q --no-cache-dir pip-audit || {
|
||||
echo "⚠️ pip-audit unavailable, skipping dependency vulnerability scan (advisory)"
|
||||
pip-audit --version 2>/dev/null || true
|
||||
}
|
||||
}
|
||||
if command -v pip-audit >/dev/null 2>&1 || python3 -m pip show pip-audit >/dev/null 2>&1; then
|
||||
pip-audit --version
|
||||
EXIT_CODE=0
|
||||
for req_file in requirements.txt requirements-base.txt requirements-dev.txt; do
|
||||
if [ -f "$req_file" ]; then
|
||||
echo "--- Scanning $req_file ---"
|
||||
pip-audit -r "$req_file" --desc on 2>&1 | head -40 || EXIT_CODE=$?
|
||||
echo ""
|
||||
fi
|
||||
done
|
||||
echo "pip-audit scan completed (advisory mode - warnings only, not blocking CI)"
|
||||
else
|
||||
echo "⚠️ pip-audit not available, skipping dependency vulnerability scan (advisory)"
|
||||
fi
|
||||
|
||||
# --- CI脚本语法校验 ---
|
||||
echo ""
|
||||
|
||||
@@ -24,7 +24,7 @@ echo "✅ Code formatting checks passed"
|
||||
echo ""
|
||||
echo "=== [3/3] Dead code detection (vulture, advisory only) ==="
|
||||
set +e
|
||||
python3 -m pip install -q vulture
|
||||
python3 -m pip install -q --no-cache-dir vulture || echo "⚠️ vulture install failed, skipping dead code detection"
|
||||
vulture --version
|
||||
echo "告警模式,不阻断CI。置信度>=90%建议尽快确认。"
|
||||
echo ""
|
||||
|
||||
Reference in New Issue
Block a user