Jenkins中如何直接邮件发送测试结果仪表盘?当前已发控制台输出链接
如何在Jenkins邮件中直接发送测试结果仪表盘
当然可以实现!我之前也碰到过这种需求——不想让收件人点链接跳转到Jenkins看结果,直接把可视化的测试仪表盘嵌在邮件里,下面几种方法亲测好用:
方法1:用Email Extension Plugin(邮件扩展插件)嵌入HTML报告
这是最常用的方案,步骤如下:
- 先确保你的Jenkins已经安装了Email Extension Plugin和生成测试报告的插件(比如
HTML Publisher Plugin、Allure Jenkins Plugin等) - 在Jenkins项目的「构建后操作」中添加「Editable Email Notification」
- 配置邮件内容时,切换到「HTML」模式,然后通过Jenkins变量或直接读取报告文件的HTML内容嵌入:
- 比如如果是HTML Publisher生成的报告,可以用
${FILE,path="**/html-report/index.html"}变量直接把报告的HTML内容插入邮件正文 - 如果是Allure报告,你可以先导出Allure的静态HTML文件,再用同样方式嵌入(注意Allure的CSS和JS最好内联,不然邮件里样式会错乱)
- 比如如果是HTML Publisher生成的报告,可以用
- 记得在邮件设置里开启「Allow sending HTML emails」,同时提醒收件人开启邮件客户端的HTML显示权限
方法2:用自定义脚本生成嵌入式仪表盘
如果你的测试报告是自己用Python生成的(比如pytest-html),可以在构建步骤里加一个脚本,把报告的关键可视化部分(比如测试通过率图表、失败用例汇总)转换成内联HTML,再在邮件里引用:
- 比如用Python的
matplotlib生成测试结果图表,转成Base64编码的图片嵌入邮件:import base64 from io import BytesIO import matplotlib.pyplot as plt # 生成测试结果统计图表 plt.bar(['通过', '失败'], [85, 15]) plt.title('测试结果汇总') img_buffer = BytesIO() plt.savefig(img_buffer, format='png') img_base64 = base64.b64encode(img_buffer.getvalue()).decode() # 生成带内联图片的HTML片段 html_content = f'<div style="text-align:center"><img src="data:image/png;base64,{img_base64}" alt="测试结果统计"></div>' - 把生成的
html_content写入临时文件,再用Email Extension插件读取该文件内容插入邮件正文
注意事项
- 邮件客户端大多会屏蔽外部CSS和JS,建议把报告样式内联到HTML里,避免仪表盘显示错乱
- 如果报告内容过大,可能会被邮件服务商拦截,建议只嵌入关键汇总部分,详细内容可保留链接作为补充
- 确保Jenkins有读取测试报告文件的权限,否则无法获取HTML内容
内容的提问来源于stack exchange,提问作者user123
相关产品推荐
相关产品推荐

