mcpField
D
django-ci-test-optimization

django-ci-test-optimization

github.com/lvtd-llc测试与质量160 次安装7 周前更新
代码仓库

关于 django-ci-test-optimization

用于缩短 Django CI 测试反馈时间且不削弱覆盖范围的 Skill。它建议先测量瓶颈,再优化依赖缓存,并谨慎选择测试拆分或并行方案。

主要功能

  1. 01按阶段测量 CI 耗时
  2. 02缓存依赖下载
  3. 03确保 CI 运行完整测试
  4. 04依据耗时拆分测试
  5. 05在安全时使用并行工作进程

适用场景

  1. 01定位拖慢 CI 的准备阶段
  2. 02通过缓存加快 Django 测试
  3. 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 工作流

  1. 记录当前 CI 耗时。

    • 分别统计依赖安装、测试数据库设置、测试执行和构件上传的耗时。
    • 将 CI 耗时与本地实际运行时间对比,找出仅由环境导致的开销。
  2. 优先缓存依赖项。

    • 使用 CI 原生的缓存机制缓存 pip 或包管理器缓存。
    • 缓存软件包下载缓存;除非项目已支持这种模式,否则不要缓存可能发生变更的虚拟环境。
  3. 确保本地快捷方式不会掩盖问题。

    • 本地运行可以跳过慢速测试或复用数据库。
    • CI 应运行慢速测试,并至少包含一条采用贴近实际迁移方式的数据库设置路径。
  4. 有计划地拆分测试。

    • 当 slow 标记有明确意义时,将慢速测试与常规测试拆分。
    • 确保测试套件适用于 django-test-parallelization 后,再使用并行工作进程。
    • 避免在过多分片中重复开销较大的设置流程。
  5. 只有在消除明显浪费后,才升级硬件配置。

    • 更快的运行器或许是务实的选择,但过早使用只会掩盖低效的设置流程。

请阅读 ci-patterns.md,了解命令和配置模式。

决策规则

  • 优先缓存依赖下载,而不是为了提升 CI 速度而改写测试代码。
  • 严格注册 pytest 标记,避免 slow 拼写错误在不知情的情况下改变覆盖范围。
  • 如果本地命令排除了慢速测试,就添加包含这些测试的 CI 任务。
  • 如果本地使用了跳过迁移的快捷方式,就添加运行真实迁移的 CI 路径。
  • 测试类别有意区分时按标签拆分;测试套件足够同质时按工作进程拆分。
  • 根据耗时数据选择分片边界。

常见错误

  • 缓存路径选错,结果没有任何提升。
  • 添加本地跳过默认设置后,慢速测试从 CI 中消失。
  • 分片过多,反复支付数据库和设置开销。
  • 在生产应用使用 PostgreSQL/MySQL 的情况下,于 CI 中改用 SQLite。
  • 尚未修复共享资源问题,就启用 CI 并行工作进程。
  • 把更大的运行器当作性能分析的替代品。

验证

完成前,请确认:

  • CI 仍会运行所有必需的测试类别。
  • 依赖项发生变化时,缓存键也会变化。
  • 测试拆分命令有文档记录,并且在可行时可在本地复现。
  • 在实际 CI 日志中,慢速测试拆分或工作进程拆分确实减少了实际运行时间。
  • 存在用于串行复现问题的调试备用命令。

评论

支持 Markdown