关于 django-ci-test-optimization
用于缩短 Django CI 测试反馈时间且不削弱覆盖范围的 Skill。它建议先测量瓶颈,再优化依赖缓存,并谨慎选择测试拆分或并行方案。
主要功能
- 01按阶段测量 CI 耗时
- 02缓存依赖下载
- 03确保 CI 运行完整测试
- 04依据耗时拆分测试
- 05在安全时使用并行工作进程
适用场景
- 01定位拖慢 CI 的准备阶段
- 02通过缓存加快 Django 测试
- 03规划测试分片或并行执行
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ lvtd-llc/ skills --skill django-ci-test-optimization安装后在 Claude Code 中输入/django-ci-test-optimization确认已加载。
附带文件references/ci-patterns.md
详细介绍
Django CI 测试优化
CI 优化应缩短反馈时间,同时不降低置信度。将快速本地命令与完整 CI 覆盖范围区分开来,然后通过缓存、并行处理和合理的拆分点加快 CI 流程。
CI 工作流
-
记录当前 CI 耗时。
- 分别统计依赖安装、测试数据库设置、测试执行和构件上传的耗时。
- 将 CI 耗时与本地实际运行时间对比,找出仅由环境导致的开销。
-
优先缓存依赖项。
- 使用 CI 原生的缓存机制缓存 pip 或包管理器缓存。
- 缓存软件包下载缓存;除非项目已支持这种模式,否则不要缓存可能发生变更的虚拟环境。
-
确保本地快捷方式不会掩盖问题。
- 本地运行可以跳过慢速测试或复用数据库。
- CI 应运行慢速测试,并至少包含一条采用贴近实际迁移方式的数据库设置路径。
-
有计划地拆分测试。
- 当
slow标记有明确意义时,将慢速测试与常规测试拆分。 - 确保测试套件适用于
django-test-parallelization后,再使用并行工作进程。 - 避免在过多分片中重复开销较大的设置流程。
- 当
-
只有在消除明显浪费后,才升级硬件配置。
- 更快的运行器或许是务实的选择,但过早使用只会掩盖低效的设置流程。
请阅读 ci-patterns.md,了解命令和配置模式。
决策规则
- 优先缓存依赖下载,而不是为了提升 CI 速度而改写测试代码。
- 严格注册 pytest 标记,避免
slow拼写错误在不知情的情况下改变覆盖范围。 - 如果本地命令排除了慢速测试,就添加包含这些测试的 CI 任务。
- 如果本地使用了跳过迁移的快捷方式,就添加运行真实迁移的 CI 路径。
- 测试类别有意区分时按标签拆分;测试套件足够同质时按工作进程拆分。
- 根据耗时数据选择分片边界。
常见错误
- 缓存路径选错,结果没有任何提升。
- 添加本地跳过默认设置后,慢速测试从 CI 中消失。
- 分片过多,反复支付数据库和设置开销。
- 在生产应用使用 PostgreSQL/MySQL 的情况下,于 CI 中改用 SQLite。
- 尚未修复共享资源问题,就启用 CI 并行工作进程。
- 把更大的运行器当作性能分析的替代品。
验证
完成前,请确认:
- CI 仍会运行所有必需的测试类别。
- 依赖项发生变化时,缓存键也会变化。
- 测试拆分命令有文档记录,并且在可行时可在本地复现。
- 在实际 CI 日志中,慢速测试拆分或工作进程拆分确实减少了实际运行时间。
- 存在用于串行复现问题的调试备用命令。
评论
支持 Markdown