解决Jenkins中HTML报告样式无法显示问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决Jenkins中HTML报告样式无法显示问题相关的知识,希望对你有一定的参考价值。

参考技术A 问题:Jenkins中在访问有自定义样式或动画效果的测试报告时追答

会出现样式无法正常显示的问题。原因:Jenkins为了避免受到恶意html/JS文件的攻击,会默认将安全策略CSP设置为:sandbox; default-src none; img-src self; style-src self;在此配置下,只允许加载:Jenkins服务器上托管的CSS文件、Jenkins服务器上托管的图片文件解决方案:通过修改启动命令来实现:D:\jenkins>java -Dhudson.model.DirectoryBrowserSupport.CSP= -jar jenkins.war这些解决方案在黑马程序员官网里面都有系统的免费视频可以学。

本回答被提问者采纳

在 Jenkins 中使用 Email-ext 插件在邮件正文中显示 HTML 页面

【中文标题】在 Jenkins 中使用 Email-ext 插件在邮件正文中显示 HTML 页面【英文标题】:Display HTML page inside mail body with Email-ext plugin in Jenkins 【发布时间】:2014-03-30 18:56:21 【问题描述】:

我是 Jenkins 的新手,我想知道如何在邮件正文中显示成功构建后生成的 HTML 报告(而不是 HTML 代码)(而不是作为附件)。

我想知道我应该遵循的确切步骤以及我可能的果冻模板的内容应该是什么。

【问题讨论】:

【参考方案1】:

如果您使用自定义路径

我在尝试实现此结果时遇到了麻烦,因为我的路径是动态变化的,我必须在 FILE 变量中使用一个变量。所以当我尝试以下任何一项时

body: '$FILE,path=$report'
body: "$FILE,path=$report"
body: '''$FILE,path=$report'''

还有更多,它没有用。另一方面,由于 Jenkins 的限制,我无法使用 groovy 读取文件

我的解决方法是像这样直接用shell读取html

html_body = sh(script: "cat $report", returnStdout: true).trim()

然后发送电子邮件

emailext replyTo: '$DEFAULT_REPLYTO',
  subject: "subject",
  to: EMAIL,
  mimeType: 'text/html',
  body: html_body

$report 是指向 html 文件的路径,例如 /var/jenkins/workspace_318/report.html

【讨论】:

【参考方案2】:

应该是这样的

导航

Configure -> Editable Email Notification

默认内容

$FILE,path="path/result.html"

【讨论】:

【参考方案3】:

除了使用body: $FILE,path="index.html" 读取文件之外,您还需要使用mimeType: 'text/html 为一次执行全局或显式设置正确的内容类型。

emailext subject: '$DEFAULT_SUBJECT',
                    body: '$FILE,path="index.html"',
                    recipientProviders: [
                        [$class: 'CulpritsRecipientProvider'],
                        [$class: 'DevelopersRecipientProvider'],
                        [$class: 'RequesterRecipientProvider']
                    ], 
                    replyTo: '$DEFAULT_REPLYTO',
                    to: '$DEFAULT_RECIPIENTS',
                    mimeType: 'text/html'

【讨论】:

我收到了邮件但是没有显示css。我正在使用范围报告的dashboard.html【参考方案4】:

您可以使用 Editable Email Notification 构建后操作将 html 内容作为邮件正文的一部分发送。

复制Default Content中的html内容,选择Content TypeHTML (text/html),如下图:

【讨论】:

截至 2021 年,它似乎已被弃用。 @EladAvron 如果您遇到将实际文件路径放在电子邮件正文中而不是 HTML 内容的问题,请检查是否安装了此最新版本的插件 - plugins.jenkins.io/token-macro。当我更新这个插件时,我遇到了这个问题并解决了。 (Email Ext 插件在内部使用它,但似乎不会随着 Email Ext 更新而自动更新)【参考方案5】:

您只需将链接分配给环境变量,然后您就可以使用该变量在电子邮件中使用 $ENV, var=ENV_VARIABLE 进行打印。

【讨论】:

【参考方案6】:

深入了解plugin 文档。这里不需要 groovy。

只需确保将内容类型设置为 HTML 并将以下内容添加到正文中:

$FILE,path="my.html"

这会将my.html 内容放在您的电子邮件正文中(文件的位置相对于工作的工作区。我使用它并且效果很好。

我希望这会有所帮助。

编辑:请注意,您必须拥有 Jenkins 版本 1.532.1(或更高版本)才能通过 email-ext 插件支持此功能。

【讨论】:

我将内容设置为 html 并按照现在提到的那样做,它在邮件正文中返回一个错误,说 ERROR: File '/data/test.html' does not exist /data/test.html 是文件系统根目录的绝对路径(前导斜杠)。仅尝试data/test.html 假设我的html文件的绝对路径是/data/jenkins/jobs/GAMETV/htmlreports/HTML_Report/GAMETV.html我应该把什么作为路径? 作为初步测试,把整个路径/data/jenkins/jobs/GAMETV/htmlreports/HTML_Report/GAMETV.html放上去看看是否有效。 通过将“可编辑电子邮件通知”>“内容类型”值更新为 HTML (text/html) 并将“默认内容”字段值更新为“$FILE,path="target/site /serenity/index.html"。没有对触发器字段进行任何更改。【参考方案7】:

Jenkins 1.558 对我有用

$FILE,path="target/failsafe-reports/emailable-report.html"

【讨论】:

您能否添加屏幕截图,显示在何处添加此值?

以上是关于解决Jenkins中HTML报告样式无法显示问题的主要内容,如果未能解决你的问题,请参考以下文章

34-Jenkins-使用publish html report插件展示HTML报告

解决Jenkins中执行jmeter脚本后不能发报告(原报告被覆盖新报告无法保存)的问题

httprunner学习20-extentreports页面样式无法加载问题(已解决)

如何在 Jenkins 中配置 Selenium HTML 报告

Jenkins传参修改jmeter的报告名称和详细报告地址

解决Jenkins发送测试报告中用例成功失败数量为空的问题