Jenkins email-ext插件发送Robot Framework日志内容失败求助
解决Robot Framework报告嵌入Jenkins邮件显示失败的问题
我之前踩过一模一样的坑!为啥邮件里会显示"Opening Robot Framework log failed"?核心原因是Robot生成的log.html和report.html依赖本地相对路径的CSS、JS资源——这些文件在Jenkins服务器上是存在的,但直接把HTML内容塞进邮件后,邮件客户端根本找不到这些外部资源,自然加载失败。
下面给你几个靠谱的解决办法,按实用性排序:
方法1:生成自包含的内联资源报告(最推荐)
Robot Framework 4.0及以上版本的rebot命令自带了--inline参数,能把所有CSS、JS脚本直接嵌入到HTML文件里,生成完全独立的报告,没有任何外部依赖。
步骤超简单:
- 修改Jenkins里的Robot执行命令,在
rebot阶段加上--inline参数:rebot --inline --outputdir ./results ./results/output.xml - 这样生成的
log.html和report.html就是"自给自足"的,直接用email-ext读取它们的内容作为邮件正文,邮件客户端就能正常显示所有样式和交互了。
如果你的Robot版本低于4.0,也可以用Node.js的html-inline工具来事后处理报告:
- 先全局安装工具:
npm install -g html-inline - 在Jenkins构建步骤里,生成原始报告后执行:
html-inline ./results/log.html > ./results/inline_log.html html-inline ./results/report.html > ./results/inline_report.html - 最后让email-ext读取
inline_log.html的内容作为邮件正文就行。
方法2:用email-ext的资源转换功能
email-ext插件本身就支持处理HTML里的外部资源——它能把HTML引用的CSS/JS转换成邮件附件,同时自动修改HTML里的资源路径,让邮件客户端能加载到这些附件。
配置步骤:
- 在Jenkins的email-ext配置中,选择邮件格式为HTML。
- 找到并勾选"Convert HTML resources to attachments"选项。
- 在邮件正文区域,用
${FILE,path="${WORKSPACE}/results/log.html"}来嵌入报告内容(注意用绝对路径,避免找不到文件)。 - 发送测试邮件,你会发现邮件附带了几个小附件(就是那些CSS/JS文件),但正文里的报告能正常显示了。
方法3:折中方案——在邮件里放Jenkins报告链接
如果上面两种方法都不想折腾,也可以直接在邮件里放Jenkins上报告的直接访问链接,让收件人点击查看:
Robot Framework测试结果:
最后提个小注意点:确保Jenkins的构建用户有读取报告文件的权限,而且email-ext引用文件时最好用${WORKSPACE}变量来拼接绝对路径,避免因相对路径导致找不到文件的问题。
内容的提问来源于stack exchange,提问作者S.C
相关产品推荐
相关产品推荐

