You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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最好内联,不然邮件里样式会错乱)
  • 记得在邮件设置里开启「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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:57:05