ci: 第二批流水线提速 - 合并 validate-python + 拆分 validate-style/security #1580
Reference in New Issue
Block a user
Delete Branch "ci/pipeline-speedup-batch2"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
CI 流水线第二批提速优化
改动 5:合并 validate-type-check + validate-migration → validate-python
改动 6:拆分 validate-code-quality → validate-style + validate-security
两个 job 并行执行,wall-clock 从 ~10min 降到 ~5min。
配套更新
【阻塞级判定】
📊 审查概览
🔴 阻塞级问题(必须修复)
validate-code-quality拆分为validate-style时,diff 中移除了原有的Install dependencies步骤(安装 requirements-base.txt, requirements.txt, requirements-dev.txt)以及手动安装black和isort的步骤。新的validate_style.sh脚本执行了python3 -m compileall(需要项目依赖)、black、isort和ruff。由于缺少安装步骤,这些工具和依赖将不存在,导致该 CI 任务必然失败。validate-style任务中,恢复Install dependencies步骤,确保安装requirements-dev.txt(通常包含 linter)或其他必要的依赖文件,以便compileall和 linter 能够正常运行。💡 改进建议(不阻塞合并)
[.gitea/workflows/ci-pipeline.yml: ~250] validate-security 任务安装了不必要的全量依赖
validate-security任务中安装了requirements-base.txt,requirements.txt,requirements-dev.txt。该任务主要运行bandit(静态分析)和pip-audit(依赖审计)。pip-audit可以直接审计文件而不需要安装依赖包,bandit通常也不需要运行时环境。安装全量依赖会显著增加 CI 运行时间和资源消耗。建议仅安装bandit等必需工具,或利用pip-audit的本地文件审计功能而不安装项目依赖。[.gitea/workflows/ci-pipeline.yml] 缓存 Key 碎片化导致存储浪费
validate-style,validate-security,validate-python)使用了不同的 cache key(pip-style,pip-security,pip-python),但它们都基于hashFiles('requirements*.txt')且安装内容高度重叠。这将导致同一份依赖包在缓存中存储三份,浪费磁盘空间。建议统一使用同一个 cache key(如${{ runner.os }}-pip-deps-${{ hashFiles('requirements*.txt') }}),除非任务间存在严重的包版本冲突需要隔离。✅ 良好实践
validate-style任务中保留了Auto-fix formatting步骤,对开发者友好。validate_security.sh中对bandit和pip-audit设置为非阻断(advisory only),既进行了扫描又避免了因第三方库漏洞阻塞主流程,符合安全扫描的常见策略。🤖 由 AI 代码审查机器人自动生成 | 2026-08-31 10:29:55 | 模型:
🚀 预览环境已部署
🗑️ 预览环境已清理
PR #1580 已关闭或合并,对应的预览环境已被清理。