美文网首页
Jenkins加载html错误问题

Jenkins加载html错误问题

作者: 何妨吟啸且徐行1 | 来源:发表于2018-12-27 12:59 被阅读0次
    错误信息

      将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内容(一般情况,默认是允许加载的):

    设置 - 高级设置 - 内容设置 - 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,生成报告可查看:

    与直接查看报告没有差别

    不过这种解决办法,在重启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是一个效果,还多了一个永久的性质:

    启动命令

    相关文章

      网友评论

          本文标题:Jenkins加载html错误问题

          本文链接:https://www.haomeiwen.com/subject/xnoklqtx.html