1. 简介
本文我们将深入了解 Foresight,这是 Thundra 推出的一款新的 CI 流水线监控工具,旨在帮助我们统一监控多个代码仓库的 CI 流水线运行情况。
它不仅提供了流水线执行的可视化数据,还能追踪测试覆盖率、失败原因以及性能瓶颈。尤其适合那些拥有多个微服务或多个仓库的项目团队。
2. Foresight 是什么?
Foresight 是一个用于增强 CI 流水线和测试可视化的监控工具。它能展示流水线的执行性能、测试结果、覆盖率,并支持“变更影响分析(Change Impact Analysis)”,即通过 Pull Request 中的变更,分析其对测试覆盖率和构建稳定性的影响。
目前,Foresight 只支持 GitHub Actions 作为 CI 工具,因此你的代码必须托管在 GitHub 上。未来可能会支持更多平台。同时,它支持多种测试输出格式,包括但不限于 JUnit 和 JaCoCo。
3. 将 Foresight 引入项目
在开始之前,你需要:
- 一个或多个 GitHub 仓库
- 已配置的 GitHub Actions 流水线
3.1 注册 Foresight 账号
访问 Foresight 注册页面,填写表单完成注册:
登录后,点击 “Connect Pipeline” 开始连接你的 CI 流水线:
如果尚未安装 Foresight 的 GitHub App,点击 “Install” 安装:
接下来选择是否让 Foresight 监控所有仓库或手动选择:
最后创建项目并选择要监控的仓库:
此时 Foresight 已连接你的 GitHub 项目,并展示了一个简洁的仪表盘:
4. 集成 Foresight 到 CI 流水线
目前我们只是让 Foresight 跟踪了仓库状态。要让它发挥更大作用,我们需要将其深度集成到 GitHub Actions 流水线中。
4.1 获取 API Key
进入 Foresight 控制台的 “Integrate your tests” 页面获取 API Key:
4.2 配置 GitHub Secret
进入你的 GitHub 项目设置页面,添加一个新的 Secret:
名称为 FORESIGHT_API_KEY
,值为你在 Foresight 上复制的 API Key。
4.3 修改 GitHub Actions 流水线
在 .github/workflows
下的 YAML 文件中添加以下两个步骤:
4.3.1 收集工作流数据
- name: Collect Workflow Telemetry
uses: runforesight/foresight-workflow-kit-action@v1
if: success() || failure()
with:
api_key: ${{ secrets.FORESIGHT_API_KEY }}
✅ 用于记录整个工作流的执行数据,包括每个步骤的耗时和资源使用。
4.3.2 分析测试与覆盖率结果
- name: Analyze Test and/or Coverage Results
uses: runforesight/foresight-test-kit-action@v1
if: success() || failure()
with:
api_key: ${{ secrets.FORESIGHT_API_KEY }}
test_format: JUNIT
test_framework: JUNIT
test_path: target/surefire-reports
coverage_format: JACOCO/XML
coverage_path: target
✅ 用于上传测试结果和覆盖率报告,便于 Foresight 展示详细测试数据。
⚠️ 注意:
test_path
和coverage_path
要根据你的项目结构进行调整。
集成完成后,Foresight 的仪表盘将展示每次测试运行的详细信息:
你还可以查看每个步骤的耗时变化:
5. 分析问题构建
Foresight 提供了强大的问题诊断能力,帮助我们快速定位失败或慢速测试。
5.1 查看测试概览
在 “Test Run Overview” 页面中,可以看到:
- 最失败的测试套件
- 最耗时的测试用例
例如,CalculatorTest
中的 testSlow
耗时 8 秒:
点击进入某个测试套件,可以看到更详细的测试执行数据:
点击具体测试用例,可以查看失败原因和历史表现:
5.2 查看历史性能趋势
在 “Performance” 标签页中,可以查看该测试的历史执行情况:
这有助于我们快速定位问题首次出现的时间点,从而缩小排查范围。
6. 分析问题工作流
除了测试,Foresight 还能帮助我们分析整个 CI 工作流的瓶颈。
6.1 查看工作流执行详情
Foresight 显示每个 Job 和 Step 的执行情况,包括耗时和状态:
6.2 查看每个步骤的资源消耗
点击 “Processes” 标签页,可以看到每个步骤的详细执行过程:
例如,setup-java
和 bash
是耗时最长的步骤,其中 surefire
占据了主要时间。
6.3 查看资源使用情况
点击 “Metrics” 标签页,可以看到整个流水线执行期间的 CPU、内存、网络和磁盘使用情况:
从图中可以看出 CPU 使用率飙升,说明构建过程是 CPU 密集型的。
7. 变更影响分析(Change Impact Analysis)
Foresight 的一个亮点功能是 变更影响分析,它帮助我们评估 Pull Request 中代码变更的测试覆盖情况。
7.1 配置 GitHub Actions 以支持 PR
为了让 Foresight 能分析 PR 中的变更,需要确保 GitHub Actions 流水线在 PR 创建或更新时触发:
on:
push:
pull_request:
types:
- opened
- edited
- reopened
- synchronize
7.2 在 Foresight 中查看变更覆盖
一旦流水线运行完成,Foresight 会展示测试覆盖率与代码变更的叠加信息:
可以看到,某个类的 subtract
方法修改了,但没有足够的测试覆盖,提示我们需要补充测试或评估是否需要保留该方法。
8. 总结
Foresight 是一个强大的 CI 流水线监控工具,能够帮助我们:
✅ 深入分析测试执行和覆盖率
✅ 快速定位失败或慢速测试
✅ 查看工作流执行详情与资源消耗
✅ 评估 Pull Request 中变更的测试覆盖情况
如果你正在寻找一个能提升 CI 效率和测试质量的工具,Foresight 值得一试。它不仅能帮你发现问题,还能帮你找到优化方向。
✅ 官网:https://app.runforesight.com
✅ GitHub Action:runforesight/foresight-workflow-kit-action
✅ 测试插件:runforesight/foresight-test-kit-action