当前位置: 首页 > news >正文

解决jenkins(本机部署或容器部署)安全机制【CSP】问题

背景

在Jenkins流水线执行pytest测试时,生成的allure报告在使用HTML Publisher插件(懒得在jenkins中配置allure插件)展示allure报告时(测试在指定镜像的容器中执行的,对应的镜像已经安装java、allure,直接在测试完成后就生成了allure报告),Jenkins 的安全机制(Content Security Policy,简称 CSP)拦截了 HTML 中的自动刷新指令

解决方式

方式一【临时解决】

  1. 登录 Jenkins,在左侧菜单栏点击 “系统管理” (Manage Jenkins)。
  2. 找到并点击 “脚本命令行” (Script Console)。
  3. 在输入框中粘贴命令(System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", ""))并点击 “运行” (Run):
  4. 执行后,回到你的构建报告页面刷新一下,通常就能正常自动跳转了。

方式二【永久生效】

如果希望 Jenkins 重启后依然保持自动跳转功能,需要修改 Jenkins 的启动参数:

  1. 找到 Jenkins 的配置文件(如果是 Windows 安装的 Jenkins 服务,通常是安装目录下的 jenkins.xml;如果是 Linux 或 Docker 部署,通常在启动脚本或环境变量中)。(如果是容器部署,可以查看下文)
  2. 在启动参数( 标签或 JAVA_OPTS 环境变量)中加入以下参数:
    -Dhudson.model.DirectoryBrowserSupport.CSP=(注意等号后面是空的,表示清空所有限制)。
  3. 保存文件并重启 Jenkins 服务。

容器部署如何解决

方式一:删除重建容器

  1. 停止并删除当前的 Jenkins 容器
    首先,你需要停止当前正在运行的 Jenkins 容器。(注意:只要你在最初启动时使用了 -v 挂载了数据卷,删除容器不会丢失你的配置和任务数据)
dockerstop<你的jenkins容器名称或ID>dockerrm<你的jenkins容器名称或ID>
  1. 使用包含 CSP 参数的命令重新启动容器
    在原有的 docker run 启动命令中,加入 -e JAVA_OPTS=“…” 参数。完整的命令示例如下:
    可参考A01_create_jenkins.sh
dockerrun-d\--namejenkins\-uroot\-p9123:8080\-p50000:50000\-v/home/jenkins:/var/jenkins_home\-v/var/run/docker.sock:/var/run/docker.sock\-v/usr/bin/docker:/usr/bin/docker\-eJAVA_OPTS="-Dhudson.model.DirectoryBrowserSupport.CSP=\"default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline';\""\jenkins:latest

注:如果是使用 Docker Compose:

如果是通过docker-compose.yml文件来管理容器的,不需要敲很长的命令行。只需要在对应服务的 environment 下加入该配置即可:
yaml

environment:-JAVA_OPTS=-Dhudson.model.DirectoryBrowserSupport.CSP="default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline';"

修改后执行docker-comp重新创建容器即可生效。

方式二:已有容器中修改

不删除容器,修改容器内配置即可

  1. 将容器内jenkins.sh文件备份至宿主机
dockerexecjenkinscat/usr/local/bin/jenkins.sh>jenkins.shdockerexecjenkinscat/usr/local/bin/jenkins.sh>jenkins_bak.sh
  1. 编辑宿主机下的jenkins.sh文件, 在文件第二行插入以下内容
exportJAVA_OPTS="-Dhudson.model.DirectoryBrowserSupport.CSP=\"default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline';\""
  1. 将宿主机的jenkins.sh文件拷贝至容器内
dockercp/home/jenkins.sh jenkins:/usr/local/bin/jenkins.shdockerexecjenkinschmod777/usr/local/bin/jenkins.sh
  1. 验证容器内文件是否被覆盖:直接输出查看
dockerexecjenkinscat/usr/local/bin/jenkins.sh
  1. 重启容器
dockerrestart jenkins

Jenkinsfile 测试示例

pipeline{agent{// 需要安装插件:docker-workflowdocker{image'python310:v1'}}parameters{// 设置参数 string(name:'report_url', defaultValue:'', description:'报告链接地址')}stages{stage('生成HTML报告'){steps{// 假设你的脚本生成了一个 index.html 在 report 目录下sh'''mkdir-preportcat>report/index.html<<EOF <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <!-- 展示提示语,3秒后自动跳转 --> <meta http-equiv="refresh" content="3;url=${report_url}"> <title>报告跳转中</title> </head> <body> <h2>测试报告已生成</h2> <!-- 2. 增加了手动跳转的兜底提示 --> <p>如果页面没有自动跳转,请<a href="${report_url}" target="_blank" rel="noopener noreferrer">点击查看最新测试报告</a></p> </body> </html> EOF'''}}}post{always{// 发布 HTML 报告,左侧会出现"自动化测试报告"的跳转入口 publishHTML([allowMissing: false, alwaysLinkToLastBuild: true, // 始终链接到最新构建 keepAll: true, // 保留每次构建的历史报告 reportDir:'report', // HTML文件所在的目录 reportFiles:'index.html', // 入口文件名 reportName:'自动化测试报告', // 【这里定义左侧跳转入口的名称】 reportTitles:''])}}}

效果

http://www.jsqmd.com/news/985757/

相关文章:

  • 2026全球星光荣耀盛典启动 面向全球华人创作者免费征稿
  • SolidWorks_基于草图的实体特征7_筋特征构建
  • LaTeX 绘图单位避坑指南:为什么你的 Draw.io / Matplotlib 导入后字体总是不对?
  • 柳州泰遇尚养生馆:探寻龙城身心灵放松的静谧之所
  • 酒泉市2026年本地上门黄金回收门店指南 彩金+铂金+金条+白银回收门店联系方式推荐 - 干豆腐啊
  • QT初始(1)
  • 2026年效果最好的GEO服务商五强权威盘点:从技术到服务的全景对比 · 第 191 期
  • 芜湖市2026年本地上门黄金回收门店指南 彩金+铂金+金条+白银回收门店联系方式推荐 - 三大殿
  • 从零开始 - 在GitHub创建项目并上传代码
  • 10万QPS下,Redis缓存如何避免雪崩?
  • 海狮企鹅萌宠表演亮点与短板揭秘!动物技能出色,场馆环境待提
  • 多件装组合SKU图的批量生产效率分析:从PS手工到AI自动化的工作流改造
  • 2026武汉网站建设、网站设计、小程序制作公司推荐榜单 - 奔跑123
  • 西双版纳傣族自治州2026年本地上门黄金回收门店指南 彩金+铂金+金条+白银回收门店联系方式推荐 - 三大殿
  • 第1章 认识鸿蒙元服务(零基础入门)
  • 辽源市2026年本地上门黄金回收门店指南 彩金+铂金+金条+白银回收门店联系方式推荐 - 干豆腐啊
  • 2026年6月变频器厂家TOP5综合评测:技术、选型与标杆企业全解析
  • N8N 工作流使用中转API 教程
  • 计算机小程序毕设实战-基于springboot+微信小程序的演唱会售票系统小程序【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 微信搜一搜正在成为小程序最大的免费流量入口
  • 阿萨德test
  • 独立开发者最值钱的资产,是 1000 个忠实用户
  • 2026 岳阳厨卫屋面地下室漏水瓷砖空鼓测评:吉修匠 99.8 分五星榜首 - 吉修匠
  • 从0到1:阿里云宝塔面板部署SpringBoot+Vue能源管理系统保姆级教程
  • 116、飞控中的状态机设计模式
  • 2026年上海路面养护洒水车出租公司电话排名:高效降尘/绿化浇灌/工地清洁,专业租赁公司实力解析 - 企业推荐官【官方】
  • 063、NPU的YOLO加速:目标检测网络的硬件优化
  • ROS2 入门教程第一篇:配置 ROS2 环境
  • 襄阳市2026年本地上门黄金回收门店指南 彩金+铂金+金条+白银回收门店联系方式推荐 - 三大殿
  • 2026年最新5个免费字体下载网站合集,设计师速速收藏!