目录

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的安全防护能力。 看到这篇文章的同学自己可以酌情选择适合自己的方法去解决该问题

本文是转载文章,点击查看原文
如有侵权,请联系 xyy@jishuzhan.net 删除
相关推荐
Doris Liu.27 分钟前
如何检测代码注入(Part 2)
windows·python·安全·网络安全·网络攻击模型
逢生博客29 分钟前
阿里 FunASR 开源中文语音识别大模型应用示例(准确率比faster-whisper高)
人工智能·python·语音识别·funasr
噔噔噔噔@33 分钟前
软件测试对于整个行业的重要性及必要性
python·单元测试·压力测试
赵谨言1 小时前
基于Python的Django框架的个人博客管理系统
经验分享·python·毕业设计
Guarding and trust1 小时前
python系统之综合案例:用python打造智能诗词生成助手
服务器·数据库·python
淮北4941 小时前
ros调试工具foxglove使用指南三:在3d空间写写画画(Panel->3D ->Scene entity)
python·学习·3d·机器人
mosquito_lover11 小时前
Python实现音频数字水印方法
python·音视频
苹果.Python.八宝粥1 小时前
Python第七章02:文件读取的练习
开发语言·python
Python之栈1 小时前
Python 3.13 正式支持 iOS:移动开发的新篇章
python·macos·objective-c·cocoa
lisw053 小时前
我开发了一款生成合成数据集的工具
人工智能·python