CI 测试产物是什么
CI 测试产物指作业运行中产生的报告、日志、截图、trace、覆盖率数据等文件,按约定上传为流水线构件(artifacts)。命名带上运行号与用例标识便于检索与追溯;只保留失败用例现场、其余按策略过期清理,可以兼顾存储成本与排错需求。
基本信息
| 典型内容 | JUnit XML、HTML 报告、失败截图、trace、录屏、服务端日志 |
|---|---|
| 命名约定 | 包含流水线号、作业名、用例标识与时间戳 |
| 保留策略 | 按天或按大小设置过期时间,防止存储膨胀 |
| 上传时机 | 即使测试失败也要上传,否则现场直接丢失 |
| 访问控制 | 含敏感数据的报告要限制访问或先脱敏 |
典型使用场景
- 失败排查:直接从构件取截图、trace 与服务端日志,不依赖重跑
- 报告聚合:JUnit XML 交给平台汇总趋势与不稳定用例排行
- 交付证据:保留发布分支与关键版本的完整测试记录
- 性能对比:保存压测报告与指标文件作为版本间基线
- 缺陷关联:把构件链接贴进缺陷单,减少来回沟通
- 审计追溯:按运行号还原某次发布的验证过程
上传产物(GitHub Actions 示意)
上传产物(GitHub Actions 示意)
# 步骤:跑测试后无条件上传
- name: Run tests
run: npm test
- name: Upload artifacts
if: always() # 失败也要上传,保留现场
uses: actions/upload-artifact@v4
with:
name: test-artifacts-${{ github.run_number }}
path: |
test-results/
reports/
retention-days: 14常见产物与用途
| 产物 | 内容 | 主要用途 |
|---|---|---|
| JUnit XML | 用例通过失败的机读结果 | 平台聚合与趋势 |
| 截图与 trace | 失败现场回放 | UI 自动化排查 |
| HTML 报告 | 人可读的详细结果 | 评审与复盘 |
| 覆盖率文件 | cobertura 或 lcov 格式 | 质量门禁与趋势 |
| 服务端日志 | 接口与依赖日志片段 | 环境问题定位 |
只保留失败现场能显著降低上传时长与存储开销(如 trace 设为仅失败或首次重试时保留);首次排查偶发问题时,可临时改为全量保留再收紧。
上传后要校验构件非空:路径写错时流水线依然显示成功,但下载下来是空的,报告汇总与排查都会静默失败。