Jenkins上生成的allure report打不开怎么处理

目录

问题背景:

原因:

解决方案:

[Jenkins上修改配置 通过Groovy脚本在Script Console中设置和修改系统属性](#Jenkins上修改配置 通过Groovy脚本在Script Console中设置和修改系统属性)

步骤

验证是否清空成功

进一步的定制

也可以使用Nginx去解决

使用逆向代理服务器Nginx:

通过合理调整CSP配置,可以平衡安全性与功能性的需求。在生产环境中,务必进行必要的安全性考量,以防止潜在的安全漏洞。总结:


问题背景:

Jenkins上没有安装allure相关插件 只是将生成的报告发送到个人邮箱; 但是在workspace生成之后 点击index.html出现下面的情况 一直处于加载中 F12查看 app.js文件无法加载 但是验证了其实是成功生成了的 并且在本地查看的时候是正常显示的

原因:

具体原因是console的报错

"Refused to load the script 'https://saldevops.jaas-gcp.cloud.sap.corp/job/support-python-ui-test/118/execution/node/3/ws/PANA/allure-report/plugins/packages/index.js' because it violates the following Content Security Policy directive: "script-src 'unsafe-inline'". Note that 'script-src-elem' was not explicitly set, so 'script-src' is used as a fallback. index.html:1 Refused to load the script 'https://saldevops.jaas-gcp.cloud.sap.corp/job/support-python-ui-test/118/execution/node/3/ws/PANA/allure-report/plugins/screen-diff/index.js' because it violates the following Content Security Policy directive: "script-src 'unsafe-inline'". Note that 'script-src-elem' was not explicitly set, so 'script-src' is used as a fallback."

从报错不难看出是浏览器block了报告的查看

解决方案:

Jenkins上修改配置 通过Groovy脚本在Script Console中设置和修改系统属性

  1. 直接清空

    python 复制代码
    import jenkins.model.Jenkins
    
    // 将X-Frame-Options设置为空
    Jenkins.instance.setSystemProperty("hudson.model.DirectoryBrowserSupport.CSP", "")
    
    // 其他属性也可以类似地进行设置为空
  2. 允许特定脚本来源

    python 复制代码
    import jenkins.model.Jenkins
    
    // 修改 Content Security Policy,允许特定脚本来源
    Jenkins.instance.setSystemProperty("hudson.model.DirectoryBrowserSupport.CSP", "default-src 'self'; script-src 'self' 'unsafe-inline' https://yourdomain.com;")
步骤
  1. 登录Jenkins:使用管理员账户登录Jenkins界面。
  2. 打开Script Console :进入 Manage Jenkins -> Script Console
  3. 复制并粘贴脚本:将上面的示例脚本复制到Script Console中。
  4. 执行脚本:点击"Run"按钮来执行脚本。
验证是否清空成功

你可以通过浏览器的开发者工具查看HTTP头,验证这些属性是否已被清空。例如,在Chrome浏览器中:

  1. 进入 Developer Tools(Ctrl+Shift+I)。
  2. 转到 Network 标签页。
  3. 刷新Jenkins页面并选择一个HTTP请求。
  4. 查看 Headers 部分,确认相关属性是否被清空。
进一步的定制

如果您需要更具体的配置或者处理其他系统属性,可以在Script Console中对这些属性进行类似的设置或者修改。例如:

复制代码
// 设置X-Content-Type-Options为空
Jenkins.instance.setSystemProperty("hudson.model.DirectoryBrowserSupport.CSP", "")

// 可以继续添加更多需要清空或设置的属性

也可以使用Nginx去解决

使用逆向代理服务器Nginx

在Nginx配置中添加相关的CSP头配置:

python 复制代码
server {
    listen       80;
    server_name  jenkins.yourdomain.com;

    location / {
        proxy_pass         http://localhost:8080;
        proxy_set_header   Host $host;
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;

        # 添加适当的CSP头
        add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' https://yourdomain.com;";
    }
}

通过合理调整CSP配置,可以平衡安全性与功能性的需求。在生产环境中,务必进行必要的安全性考量,以防止潜在的安全漏洞。

总结:

我自己用的是方法一里面的清空属性值解决的 比较省事儿 不过要注意清空这些属性可以临时解决某些兼容性问题或进行特定的调试工作,但需要注意的是,这会显著降低Jenkins的安全防护能力。 看到这篇文章的同学自己可以酌情选择适合自己的方法去解决该问题

相关推荐
爬山算法11 小时前
Hibernate(32)什么是Hibernate的Criteria查询?
java·python·hibernate
CCPC不拿奖不改名11 小时前
python基础:python语言中的控制结构+面试习题
开发语言·python·学习
MM_MS11 小时前
Halcon基础知识点及其算子用法
开发语言·人工智能·python·算法·计算机视觉·视觉检测
a程序小傲11 小时前
小红书Java面试被问:TCC事务的悬挂、空回滚问题解决方案
java·开发语言·人工智能·后端·python·面试·职场和发展
知行合一。。。11 小时前
Python--03--函数入门
android·数据库·python
-曾牛12 小时前
Yak语言核心基础:语句、变量与表达式详解
数据库·python·网络安全·golang·渗透测试·安全开发·yak
数据大魔方12 小时前
【期货量化实战】跨期套利策略:价差交易完整指南(TqSdk源码详解)
数据库·python·算法·github·程序员创富
大、男人12 小时前
python之contextmanager
android·python·adb
毕设源码-钟学长12 小时前
【开题答辩全过程】以 基于Python的车辆管理系统为例,包含答辩的问题和答案
开发语言·python
CCPC不拿奖不改名13 小时前
数据处理与分析:数据可视化的面试习题
开发语言·python·信息可视化·面试·职场和发展