Jenkins 11个使用技巧,90%以上的人没用过
nanshan 2025-06-13 15:38 18 浏览 0 评论
一、Performance插件兼容性问题
自由风格项目中,有使用 Performance 插件收集构建产物,但是截至到目前最新版本(Jenkins v2.298,Performance:v3.19),此插件和Jenkins都存在有兼容性问题,会导致项目配置页面table,div错位,而导致无法保存配置,这个问题已经存在了好长时间了(至少半年),插件作者一直没有修复,目前在项目中要想使用这个插件,有以下三种解决办法:
- 将自由风格项目切换为流水线风格
- 服务器上手动修改项目的config.xml文件以达到保存配置的效果
- Jenkins版本降级,经过测试,此插件在v2.263.4 LTS上可以正常使用,降级前做好备份工作,以及考虑其他插件的兼容性问题
二、修改Jenkins 安全策略(CSP)
场景:
借助 Robot Framework Plugin,可将Robot Framework项目更好的集成到Jenkins中,但是直接在Jenkins 项目中点击预览测试报告,会出现 Opening Robot Framework log failed 的错误,这是由于Jenkins为了避免受到恶意HTML/JS文件的攻击,会默认将安全策略CSP设置为:
sandbox; default-src 'none'; img-src 'self'; style-src 'self';
在此配置下,只允许加载Jenkins服务器上托管的CSS文件和图片文件。解决办法需要借助 Startup Trigger 和 Groovy plugin 两个插件,具体步骤如下:
- Jenkins中新建一个Job,该Job专用Jenkins启动时执行的配置命令;
- 在“构建触发器”模块,选择“Build when job nodes start”选项,Restricted node Label保持空白,Quiet period设置为0;
- 在“构建”模块,选择“Execute system Groovy ”,执行如下Groovy命令:
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")
重启Jenkins服务器进行测试,会发现等待所有节点连接成功后此项目会立即自动触发构建。再去触发Robot项目构建,等待完成后点击访问测试报告页面,会发现已经可以正常访问了;
三、自定义Jenkins相对访问路径
场景:
nginx 为Jenkins做目录代理,同时站点下还代理了很多其他的应用,这里需要自定义Jenkins相对访问路径。
本机访问Jenkins的路径为:http://localhost:29908,需要改为:
http://localhost:29908/jenkins
方法如下:
- 在Jenkins安装根目录下找到 jenkins.xml文件
- 找到service节点下的 arguements 子节点,并在最后面添加--prefix参数:
- --prefix="/jenkins",其中 /jenkins 是自定义的访问路径
- 重启Jenkins服务,此时本机已经可以通过http://localhost:29908/jenkins进行访问
- 测试目录代理访问
注意:如果在目录代理之前,子节点和主节点之间就已经通过JNLP的方式连接好了,则需要找到子节点根目录下的 jenkins-slave.xml 文件,将service.arguements节点-jnlpUrl 参数值修改为正确的值。
四、git clone失败 : Killed by signal 15
场景:
jenkins项目clone代码时,出现任务被kill掉的情况,导致出现以下错误信息:
通过查看控制台的输出日志,可以看出原因是因为超时了。如果在限制时间内代码都没有clone完成,那么就任务就会被强制杀死:
解决方法:
当所需要clone的版本库过大或服务器网速较差时,clone的时间会超过默认的10分钟。因此需要修改 clone 的超时时间。
设置方法如下:
Jenkins:Build step 'Execute Windows batch command' marked build as failure
场景:
使用Jenkins定时跑接口测试用例,明明所有的用例都执行成功了,但是还是会触发执行失败时的邮件通知,查看Jenkins控制台日志,发现是由于上面截图的原因导致的。
解决方法:
在bat脚本(shell同样适用)最后一行加上exit 0,表示正常运行程序并退出程序。
Jenkins运行在Tomcat容器中,替换jar包的方法
背景:jenkins.war中引用的
commons-fileupload-1.3.1-jenkins-2.jar 被扫出来有安全隐患,需要替换到最新的1.4版本,因为扫描的时候是根据版本来的,如果直接采用覆盖并重命名的方法,还是会被扫出来,目前采取的方法是创建软连接。
- 先下载最新的commons-fileupload-1.4.jar
- 创建软链接(管理员权限),Linux系统下同理。
mklink webapps\jenkins\WEB-INF\lib\commons-fileupload-1.3.1-jenkins-2.jar webapps\jenkins\WEB-INF\lib\commons-fileupload-1.4.jar
- 把旧的commons-fileupload-1.3.1-jenkins-2.jar删除
- 重启tomcat
五、Windows节点机无法运行jnlp文件
在节点机双击jnlp文件没有反应时,可以尝试用命令行方式运行此文件,cmd进入jnlp文件目录下,运行 javaws slave-agent.jnlp,可以查看具体的错误提示,如下:
上图中这种情况,只需要修改下java安全配置即可解决,其他情况再具体分析。
六、关闭CSRF防护
Jenkins v2.204.6之前的版本,要想关闭CSRF防护,只需要在全局安全配置中禁用相关配置即可,但是较高版本的 Jenkins 默认均开启CSRF防护且删除了禁用的入口。要想禁用CSRF防护,只能通过配置参数的方式。
Jenkins若是跑在Tomcat下,只需在tomcat启动脚本中加入配置如下:
-Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true
若是以jar包形式部署的,只需在启动时加上配置参数即可。
七、修改 JVM 的内存配置
无论是以 Jdk Jar 方式运行Jenkins,还是将 War 包放在 Tomcat等容器下运行,都会存在一个问题:默认 JVM 内存分配太少,这导致启动或者运行一段时间后内存溢出报错
java.lang.OutOfMemoryError: PermGen spac
所以,需要在启动前修改配置文件中的JVM 内存配置
set JAVA_OPTS=-server-Xms5000M-Xmx5000M -Xss512k-XX:+AggressiveOpts-XX:+UseBiasedLocking-XX:PermSize=256M-XX:MaxPermSize=512M-XX:+DisableExplicitGC-XX:MaxTenuringThreshold=31 -XX:+UseConcMarkSweepGC-XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -Djava.awt.headless=true
这里的几个 JVM 参数含义如下:
- -Xms: 使用的最小堆内存大小
- -Xmx: 使用的最大堆内存大小
- -XX:PermSize: 内存的永久保存区域大小
- -XX:MaxPermSize: 最大内存的永久保存区域大小这几个参数也不是配置越大越好,具体要根据所在机器实际内存和使用大小配置。
八、配置优化减少磁盘空间占用
Job 构建历史较多时,如果没有配置好清理策略的话,会导致占用大量磁盘空间,最终可能会因磁盘空间不够而导致构建失败。并且在加载项目配置时,Jenkins也需要花费时间分析历史构建记录,页面加载的耗时会相应的增加。
1、丢弃旧的构建配置
如上图,配置最大保持 2 天之内的构建,如果超过 2 天的构建,则会在Job 执行前被清理掉,同时配置了最大保持构建数量为 30 个,意思就是如果 2 天内构建次数如果超过 30 次,则最多保留最近执行的 30 个构建。
2、使用Disk Uasge插件
不建议,使用此插件的过程中,发现可能会导致服务器卡顿。
3、定时清理tomcat日志
默认情况下,tomcat每天都会生成新的日志文件,且某些情况下,产生的日志文件体积会非常大,如果长期不清理,日志文件会越来越多,占用很多磁盘空间。
目前的处理方法是在Jenkins新建了一个定时任务,专门用来删除tomcat产生的日志文件。
九、设置构建时间
有些 Job 在执行构建时,由于某些原因导致构建挂起,耗时比较长,而这些长时间挂起的 Job 会导致 Jenkins 内存占用比较大,性能下降,严重的会直接导致 Jenkins 挂掉。
所以,我们需要设置构建超时时间来预防这种事情发生,一旦超过一定的时间,要让 Job 自动停止掉,如下:
设置全局属性
适当设置全局属性,可以避免在pipeline中重复写死一些固定值,例如输出日志地址、接口请求地址等等,而且当固定值需要修改时,只需要修改一次即可,不用去每个文件里面修改,方便维护。设置入口为:系统管理 -> 系统配置-> 全局属性-> Environment variables
如下图:
十、统一管理脚本
需要安装 Managed script 插件,该插件是为了在管理文件时创建 Script 脚本文件,然后在 Job 中配置直接使用,方便脚本的统一管理和维护。
插件安装完成后,进入“系统管理” —> “Managed files” ,点击 “Add a new Config” ,并选择 “Groovy file” 类型,创建一个新的 Groovy 脚本文件,然后输入我们要执行的脚本代码,如下:
创建完毕后,我们在 Job 中构建处选择 “Execute managed script” 就可以使用这些脚本了。
十一、轻量备份
使用 ThinBackup 插件,允许我们对Jenkins配置信息进行全量或增量备份,由于插件不会保存构建历史和构建工件,所备份过程更为快捷,并且无需关闭Jenkins服务器。
还原备份:
作者丨起码我有故事
来源丨网址:https://www.jianshu.com/p/99d27409eab7
dbaplus社群欢迎广大技术人员投稿,投稿邮箱:editor@dbaplus.cn
相关推荐
- 0722-6.2.0-如何在RedHat7.2使用rpm安装CDH(无CM)
-
文档编写目的在前面的文档中,介绍了在有CM和无CM两种情况下使用rpm方式安装CDH5.10.0,本文档将介绍如何在无CM的情况下使用rpm方式安装CDH6.2.0,与之前安装C5进行对比。环境介绍:...
- ARM64 平台基于 openEuler + iSula 环境部署 Kubernetes
-
为什么要在arm64平台上部署Kubernetes,而且还是鲲鹏920的架构。说来话长。。。此处省略5000字。介绍下系统信息;o架构:鲲鹏920(Kunpeng920)oOS:ope...
- 生产环境starrocks 3.1存算一体集群部署
-
集群规划FE:节点主要负责元数据管理、客户端连接管理、查询计划和查询调度。>3节点。BE:节点负责数据存储和SQL执行。>3节点。CN:无存储功能能的BE。环境准备CPU检查JDK...
- 在CentOS上添加swap虚拟内存并设置优先级
-
现如今很多云服务器都会自己配置好虚拟内存,当然也有很多没有配置虚拟内存的,虚拟内存可以让我们的低配服务器使用更多的内存,可以减少很多硬件成本,比如我们运行很多服务的时候,内存常常会满,当配置了虚拟内存...
- 国产深度(deepin)操作系统优化指南
-
1.升级内核随着deepin版本的更新,会自动升级系统内核,但是我们依旧可以通过命令行手动升级内核,以获取更好的性能和更多的硬件支持。具体操作:-添加PPAs使用以下命令添加PPAs:```...
- postgresql-15.4 多节点主从(读写分离)
-
1、下载软件[root@TX-CN-PostgreSQL01-252software]#wgethttps://ftp.postgresql.org/pub/source/v15.4/postg...
- Docker 容器 Java 服务内存与 GC 优化实施方案
-
一、设置Docker容器内存限制(生产环境建议)1.查看宿主机可用内存bashfree-h#示例输出(假设宿主机剩余16GB可用内存)#Mem:64G...
- 虚拟内存设置、解决linux内存不够问题
-
虚拟内存设置(解决linux内存不够情况)背景介绍 Memory指机器物理内存,读写速度低于CPU一个量级,但是高于磁盘不止一个量级。所以,程序和数据如果在内存的话,会有非常快的读写速度。但是,内存...
- Elasticsearch性能调优(5):服务器配置选择
-
在选择elasticsearch服务器时,要尽可能地选择与当前业务量相匹配的服务器。如果服务器配置太低,则意味着需要更多的节点来满足需求,一个集群的节点太多时会增加集群管理的成本。如果服务器配置太高,...
- Es如何落地
-
一、配置准备节点类型CPU内存硬盘网络机器数操作系统data节点16C64G2000G本地SSD所有es同一可用区3(ecs)Centos7master节点2C8G200G云SSD所有es同一可用区...
- 针对Linux内存管理知识学习总结
-
现在的服务器大部分都是运行在Linux上面的,所以,作为一个程序员有必要简单地了解一下系统是如何运行的。对于内存部分需要知道:地址映射内存管理的方式缺页异常先来看一些基本的知识,在进程看来,内存分为内...
- MySQL进阶之性能优化
-
概述MySQL的性能优化,包括了服务器硬件优化、操作系统的优化、MySQL数据库配置优化、数据库表设计的优化、SQL语句优化等5个方面的优化。在进行优化之前,需要先掌握性能分析的思路和方法,找出问题,...
- Linux Cgroups(Control Groups)原理
-
LinuxCgroups(ControlGroups)是内核提供的资源分配、限制和监控机制,通过层级化进程分组实现资源的精细化控制。以下从核心原理、操作示例和版本演进三方面详细分析:一、核心原理与...
- linux 常用性能优化参数及理解
-
1.优化内核相关参数配置文件/etc/sysctl.conf配置方法直接将参数添加进文件每条一行.sysctl-a可以查看默认配置sysctl-p执行并检测是否有错误例如设置错了参数:[roo...
- 如何在 Linux 中使用 Sysctl 命令?
-
sysctl是一个用于配置和查询Linux内核参数的命令行工具。它通过与/proc/sys虚拟文件系统交互,允许用户在运行时动态修改内核参数。这些参数控制着系统的各种行为,包括网络设置、文件...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- linux 查询端口号 (58)
- docker映射容器目录到宿主机 (66)
- 杀端口 (60)
- yum更换阿里源 (62)
- internet explorer 增强的安全配置已启用 (65)
- linux自动挂载 (56)
- 禁用selinux (55)
- sysv-rc-conf (69)
- ubuntu防火墙状态查看 (64)
- windows server 2022激活密钥 (56)
- 无法与服务器建立安全连接是什么意思 (74)
- 443/80端口被占用怎么解决 (56)
- ping无法访问目标主机怎么解决 (58)
- fdatasync (59)
- 405 not allowed (56)
- 免备案虚拟主机zxhost (55)
- linux根据pid查看进程 (60)
- dhcp工具 (62)
- mysql 1045 (57)
- 宝塔远程工具 (56)
- ssh服务器拒绝了密码 请再试一次 (56)
- ubuntu卸载docker (56)
- linux查看nginx状态 (63)
- tomcat 乱码 (76)
- 2008r2激活序列号 (65)