当前位置: 首页 > news >正文

【Hermes系列7】我把 Hermes 接入了 Jenkins:回归测试从 3 天到 30 分钟

01 这是 Hermes 系列的第 7 篇,也是企业落地关键篇

前 6 篇我们解决了:本地跑通、场景实战、工程化。但真实企业里,还有一个绕不开的问题:

你本地跑得再好,怎么让团队每个人都用上?怎么保证每天按时执行?怎么让报告自动触达相关人员?

答案只有一个:接入 CI/CD

作为 14 年测试负责人,我带过 3 个团队的自动化转型。今天这篇,我把 Hermes 接入 Jenkins 的完整过程分享给你。

包括:

为什么选 Jenkins(vs GitLab CI/GitHub Actions)

  • 环境配置(浏览器、依赖、权限)

  • Pipeline 编写(可直接复制)

  • 报告集成(HTML 展示 + 历史趋势)

  • 失败通知(邮件 + 飞书)

  • 常见坑点(我踩过的 5 个)


我承诺一个结果:你照着本文走,2 小时内能让 Hermes 测试在 CI 环境跑起来


02

为什么选 Jenkins?

先回答一个常见问题:为什么不用 GitLab CI 或 GitHub Actions?

对比维度

Jenkins

GitLab CI

GitHub Actions

部署方式

自建(内网友好)

依赖 GitLab

依赖 GitHub

插件生态

最丰富

中等

中等

定制能力

最强

中等

中等

学习成本

企业采用率

70%+

20%

10%

我的选择逻辑

<ul> <li>内网环境 → Jenkins(自建)</li> <li>用 GitLab 且能接受 SaaS → GitLab CI</li> <li>开源项目 → GitHub Actions</li> </ul>

这篇用 Jenkins 示范,因为企业采用率最高。如果你用其他 CI,逻辑相通,改下 Pipeline 语法即可。


03

环境准备(CI 服务器)

硬件要求

配置

最低

推荐

CPU

4 核

8 核

内存

8GB

16GB

磁盘

50GB

100GB SSD

浏览器

Chromium

Chromium + Firefox

软件要求:Ubuntu 20.04+、Java 11+、Python 3.8+、Node.js 18+、Git、Chromium。

安装步骤(完整命令见源码目录):

1. 安装 Java 和 Jenkins
2. 获取初始密码,访问 Jenkins
3. 安装 Python 和 Hermes
4. 配置权限和中文字体

💡 提示:完整安装命令已整理到源码目录的install.sh脚本,加testzhouzhou获取。


04

Jenkins Pipeline 配置

创建新任务

1. 登录 Jenkins → 新建任务 → 选择"Pipeline"
2. 任务名:Hermes-Regression-Test
3. 勾选"Discard old builds"(保留最近 10 次)

Pipeline 核心结构

Pipeline 包含 6 个阶段: 1. 拉取代码 - 从 Git 获取测试脚本 2. 准备环境 - 安装依赖和浏览器 3. 准备测试数据 - 生成测试所需数据 4. 执行测试 - 运行 Hermes 测试(30 分钟超时) 5. 生成报告 - 生成可视化 HTML 报告 6. 清理数据 - 清理测试产生的数据

完整 Pipeline 脚本已整理到源码目录的Jenkinsfile,包含:

  • 环境变量配置

  • 6 个执行阶段

  • 失败处理和报告归档

  • 邮件/飞书通知集成

💡 提示:复制源码目录的Jenkinsfile到你的项目,修改 TEST_BASE_URL 等配置即可使用。加testzhouzhou获取。

关键插件

插件名

用途

Publish HTML reports

发布 HTML 报告

Email Extension

邮件通知

Pipeline

Pipeline 支持

Git

Git 集成


05

测试报告集成

报告生成脚本已整理到源码目录的generate_summary_report.py,功能包括:

  • 读取 JSON 测试报告

  • 生成可视化 HTML 报告

  • 显示通过率统计

  • 列出每个用例的详细结果

报告效果

  • 总用例数、通过数、失败数、通过率

  • 绿色/红色区分通过/失败状态

  • 用例详情表格(编号、名称、状态、结果说明)

💡 提示:完整报告生成脚本已整理到源码目录,加testzhouzhou获取。


07

实测演示(2026-04-13 真实执行)

测试环境

  • Jenkins 2.541.3(Docker 部署)

  • Python 3.11(Docker 容器)

  • Ubuntu 24.04

  • Hermes Agent(本地开发版)


测试用例:5 个 E2E 场景

  • TC001: 用户登录

  • TC002: 创建商品

  • TC003: 查询商品列表

  • TC004: 创建订单

  • TC005: 仪表盘数据加载


执行结果

指标

数值

总用例数

5

通过

4

失败

1

通过率

80.0%

执行时间

约 30 秒

失败分析

  • TC004(创建订单)失败 - 原因:库存不足

  • 这是预期内的失败,用于验证失败用例捕获机制

Jenkins 任务界面

*(上图:Jenkins 中创建的 Hermes 回归测试任务,可以看到构建历史)*

测试报告

*(上图:Hermes 生成的 HTML 测试报告,包含用例详情和执行时间)*

关键数据

  • TC001(用户登录):1250ms ✅

  • TC002(创建商品):2340ms ✅

  • TC003(查询商品列表):890ms ✅

  • TC004(创建订单):3200ms ❌

  • TC005(仪表盘数据):1560ms ✅


实测结论
1. ✅ Jenkins Pipeline 可以正常执行 Hermes 测试
2. ✅ 测试报告可以正确生成并归档
3. ✅ 失败用例可以被正确捕获和展示
4. ⚠️ 需要使用 Docker 容器来运行 Python 环境(避免 Jenkins 主节点依赖问题)


08

失败通知配置

邮件通知

在 Pipeline 的post.failure中添加邮件发送逻辑,包含:

  • 任务名称和构建号

  • 通过率统计

  • 失败用例列表

  • Jenkins 详情链接


飞书通知

参考源码目录的feishu_notification.groovy,发送交互式卡片消息,包含:

  • 红色告警标题

  • 任务信息和通过率

  • "查看详情"按钮

💡 提示:完整通知配置已整理到源码目录,加testzhouzhou获取。


07

定时执行配置

方案 A:Jenkins 定时触发

GROOVY复制

// 在 Pipeline 开头添加触发器

pipeline {
agent any

triggers {
// 工作日每天早上 9 点执行
cron('0 9 * * 1-5')

// 或者每晚 10 点执行
// cron('0 22 * * *')
}

// ... 其他配置
}

方案 B:Hermes cron + Jenkins

<h1>在 CI 服务器上配置 Hermes cron</h1> hermes cron create "0 9 * * 1-5" \\ --name "jenkins-regression-test" \\ --script "/home/hermes/run_regression.sh" \\ "基于测试报告 JSON,生成适合飞书群的简短摘要"

08

我踩过的 5 个坑

坑 1:浏览器启动失败

问题:Jenkins 里 Playwright 无法启动浏览器 原因:缺少依赖库 解决: sudo apt install libnss3 libnspr4 libatk1.0-0 libatk-bridge2.0-0 libcups2 libdrm2 libxkbcommon0 libxcomposite1 libxdamage1 libxfixes3 libxrandr2 libgbm1 libasound2 -y

坑 2:中文乱码

TEXT复制

问题:报告中文显示为方框 原因:CI 环境缺少中文字体 解决: sudo apt install fonts-wqy-zenhei fonts-wqy-microhei -y

坑 3:权限不足

问题:Jenkins 用户无法执行 Python 脚本 原因:权限配置问题 解决: sudo visudo <h1>添加:jenkins ALL=(ALL) NOPASSWD: /home/hermes/hermes-env/bin/python</h1>

坑 4:测试数据污染

问题:多次执行后测试数据越来越多 原因:缺少清理机制 解决: <ul> <li>统一前缀(E2E_AUTO_)</li> <li>每次执行前清理旧数据</li> <li>执行后清理本次数据</li> </ul>

坑 5:报告看不到

问题:Jenkins 上 HTML 报告无法访问 原因:Jenkins 安全策略限制 解决: 系统管理 → 脚本命令行 → 执行: System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")

09

效果对比

接入前

指标

数值

回归测试时间

3 天(2 人)

执行频率

每版本 1 次

覆盖率

60%

问题发现

上线后

报告触达

手动发送

接入后

指标

数值

提升

回归测试时间

30 分钟

93%↓

执行频率

每天 1 次

20 倍↑

覆盖率

90%

50%↑

问题发现

提交后 30 分钟

提前 3 天

报告触达

自动通知

无需人工

ROI 计算

TEXT复制

投入: <ul> <li>CI 服务器:500 元/月</li> <li>配置时间:3 天</li> <li>维护时间:2 小时/周</li> </ul> 收益: <ul> <li>节省人力:2 人 × 3 天/版本 × 2 版本/月 = 12 人天/月</li> <li>提前发现问题:减少线上故障 80%</li> <li>团队信心:敢于重构、敢于发版</li> </ul> 结论:1 个月回本,之后纯赚

10

给你的建议

如果你也想把 Hermes 接入 CI/CD,我的建议是:

第 1 周:环境准备

  • 搭建 Jenkins(或现有 CI)

  • 安装 Hermes 和浏览器

  • 跑通一个最简单的测试


第 2 周:Pipeline 配置

  • 编写 Pipeline 脚本

  • 集成测试报告

  • 配置邮件通知


第 3 周:定时执行

  • 配置定时触发

  • 配置飞书通知

  • 观察 1 周


第 4 周:优化迭代

  • 根据反馈调整

  • 增加测试场景

  • 文档沉淀


关键提醒

  • 从小场景开始(如登录回归)

  • 先跑通,再优化

  • 一定要配置失败通知

  • 测试数据要能清理


11

资源分享

我整理的资源

  • Jenkins Pipeline 完整模板(Groovy)

  • HTML 报告生成脚本(Python)

  • 飞书通知配置指南(Markdown)

  • 常见问题排查清单(PDF)


获取方式:加testzhouzhou获取。

相关文档

  • [Jenkins 官方文档](https://www.jenkins.io/doc/)

  • [Playwright CI/CD 指南](https://playwright.dev/docs/ci-intro)

  • [Hermes 官方文档](https://hermes-agent.nousresearch.com/docs/)


12

谢谢你看到这里。

Hermes 系列写到第 7 篇,我们从概念、教程、实战,走到了企业落地。

这篇可能是系列里最有价值的一篇——因为能直接帮你省时间、省人力、省麻烦。

如果你已经跑通了本地测试,强烈建议试试接入 CI/CD。

下期预告:
《Hermes系列8:代码质量评估-Hermes 生成测试代码 Review 指南》—— AI 生成代码的质量评估,测试人最关心的问题。


本地跑通只是开始,CI 跑起来才是生产力。

我是周周,一个 14 年测试老兵,一个正在探索 AI 评测的实践者。

这条路,我们一起走。


P.S. 如果你不想错过更新,记得点个在看或者分享到朋友圈。

P.P.S. Hermes 系列共 10 篇+,这是第 7 篇。建议收藏,方便后续查阅。

http://www.jsqmd.com/news/647736/

相关文章:

  • 如何用组合继承模式实现父类方法复用与子类属性独立
  • java util stream中的reduce
  • 大模型发展史
  • 2025-2026年国内云南旅行社推荐:五大口碑服务评测对比顶尖公司团建定制需求匹配 - 品牌推荐
  • 2025-2026年别墅装修公司评测:五大口碑服务推荐评价领先历史建筑改造结构安全 - 品牌推荐
  • 机器学习工程师日常:挑战解决日记
  • c++怎么在读取文件时自动跳过所有UTF-8编码的非法字节【进阶】
  • MediaPipe Pose从安装到使用:33个关键点检测,新手完整教程
  • Cursor,底层到底是怎么理解你代码上下文的? (2)
  • 2025-2026年国内别墅装修公司推荐:五大口碑服务评测对比领先全案交付品质参差注意事项 - 品牌推荐
  • 2025-2026年云南旅行社推荐:五大口碑服务评测对比顶尖定制游信息不对称难题 - 品牌推荐
  • 一种基于递归对抗动力学与认知几何约束的智能生成方法及系统(世毫九实验室发明专利)
  • Live Avatar数字人模型5分钟快速上手:阿里开源神器一键部署教程
  • 2025-2026年访客机品牌推荐:五大口碑产品评测对比顶尖访客体验差等待久案例 - 品牌推荐
  • 【多模态大模型混沌工程实战白皮书】:覆盖视觉-语言-语音三模态的12类故障注入模式与SLO守护方案
  • 为什么你的爬虫总被封?从反爬模型解析IP的关键作用
  • 多个方面分析和修复vcruntime140_1.dll无法继续执行代码的解决方法
  • Codex 和 Claude Code 的区别与各自优势:AI 编程助手该怎么选?
  • 3大核心技术解析:Midscene.js如何实现跨平台AI自动化
  • 基于Python的考试信息报名系统毕业设计
  • 智慧健康养老服务与管理老年综合实训室师资培训方案
  • 生成式AI服务冷启动耗时超17s?(CUDA Graph + vLLM预热机制深度拆解)
  • STP树形结构及分析
  • 如何从ChatGPT切换至Claude,又不丢失任何上下文或记忆信息?
  • 2025-2026年云南旅行社推荐:五大口碑服务评测对比顶尖定制旅行体验差 - 品牌推荐
  • 龙蜥社区及开发者荣膺 OS2ATC 2026 两项大奖,创新实力再获认可
  • 互联网大厂Java面试故事场景:音视频内容社区业务技术全解(Spring Boot、Kafka、Redis、微服务)
  • WaveTools鸣潮工具箱:终极性能优化与数据管理完整指南
  • IgH EtherCAT 从入门到精通:第 5 章 多主站与系统集成配置
  • 2025-2026年别墅装修公司推荐:五大口碑服务评测对比顶尖历史建筑改造工艺复杂案例 - 品牌推荐