【html】html加载类失败,Jenkins加载html错误问题

错误信息

将robot framework继承到Jenkins上以后,每次构建生成的报告report.html,都无法在Jenkins Web端上直接查看,会提示:

Opening Robot Framework log failed

Verify that you have JavaScript enabled in your browser.

Make sure you are using a modern enough browser. Firefox 3.5, IE 8, or equivalent is required, newer browsers are recommended.

Check are there messages in your browser's JavaScript error log. Please report the problem if you suspect you have encountered a bug.

导致问题的原因最常见是Jenkins的CSP设置(Content Security Policy),保证Jenkins接收的html的安全性,所以无法加载robot报告里的html样式,这个时候如果打开控制台,可能会看到如下报错信息:

Refused to apply inline style because it violates the following Content Security Policy directive: "style-src 'self'". Either the 'unsafe-inline' keyword, a hash ('sha256-uHY/X4vPBdEjjTe5VSj5Qv+jLN0gXhCdOZzdI0GtHGU='), or a nonce ('nonce-...') is required to enable inline execution.

……因为html样式的使用,后面大概会出现一串这类信息

遇到这类问题,可以从下面的步骤排查:

1、Chrom浏览器原因

在浏览器的高级设置里,会有一个JavaScript的内置选项,开启选项,允许加载JavaScript内容(一般情况,默认是允许加载的):

106464a0048f?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

设置 - 高级设置 - 内容设置 - JavaScript

如果已经允许JavaScript内容,那么确认是否robot的report.html文件内容中包含内联js内容(尤其是自己修改报告内容的情况),因为chrom不支持js内联在html文件当中[参考:http://www.cnblogs.com/liuxianan/p/chrome-plugin-develop.html]。

2、Jenkins配置问题

因为Jenkins对自己做了一个保护,所以对自己的加载内容做了控制(也就是SCP设置),默认只允许加载Jenkins服务器上托管的样式文件,所以要修改SCP配置项。

(1)临时解决方案:

打开Jenkins Web端,系统管理-脚本命令行,输入下面的命令运行:

System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")

// 运行结果:result ;

如果不确定之前有没有设置过SCP,那么可以运行下面命令查看:

System.getProperty("hudson.model.DirectoryBrowserSupport.CSP")

// 运行结果:设置好的jenkins SCP配置

键入命令后再次运行rf的project,生成报告可查看:

106464a0048f?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

与直接查看报告没有差别

不过这种解决办法,在重启Jenkins服务以后会失效,只能作为临时解决方案。

(2)永久解决方案一:

这个方法是在方案(1)的基础上延伸的,在寻找解决办法的时候看到的,方法的具体实现是:Jenkins每次启动,自动构建SCP属性配置命令的project(当然这个project是你创建的),这样每次重启Jenkins,还是可以保证报告可查看[详细实现参考:https://testerhome.com/topics/9476]。

(3)永久解决方案二:

启动Jenkins服务的时候,在服务器的配置里面直接添加,当然这种方法也要求每次启动Jenkins的时候,带着这个配置:

使用java -jar启动,直接重启,重启时写入scp配置

java -Dhudson.model.DirectoryBrowserSupport.CSP= -jar jenkins.war

(4)补充说明一个绝对永久的解决方案(/ ω\):

在解决这个问题的过程中,发现我们的Jenkins服务器,是用service启动的,这样直接在启动时增加参数修改好像是行不通的,所以修改配置文件:jenkins.service

既然是service启动的,那么应该有jenkins.service配置,确认目录是否存在

ll /etc/sysconfig/jenkins

然后vim修改配置:

vim /etc/sysconfig/jenkins

找到服务配置中的JENKINS_JAVA_OPTIONS选项,添加启动参数选项:

JENKINS_JAVA_OPTIONS="-othersoption -Dhudson.model.DirectoryBrowserSupport.CSP=' ' "

重启Jenkins

service jenkins restart

完成以上步骤,以后无论怎样重启jenkins,都可以保证html文件加载正常了。

感谢大神指导:“服务一切以看进程为准!”,虽然是使用service启动服务,但是核心还是java -jar启动的,在配置里添加java选项后,与3是一个效果,还多了一个永久的性质:

106464a0048f?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

启动命令

posted @ 2023-03-07 16:56  gtea  阅读(120)  评论(0编辑  收藏  举报