c4e55d188d7116eba1e73791652637fd.gif743e346e-4f47-eb11-8da9-e4434bdf6706.svg

1

743e346e-4f47-eb11-8da9-e4434bdf6706.svg

git clone失败 : Killed by signal 15

场景:jenkins项目clone代码时,出现任务被kill掉的情况,导致出现以下错误信息:

c1298ac17815b218202374df183320c4.png

通过查看控制台的输出日志,可以看出原因是因为超时了。如果在限制时间内代码都没有clone完成,那么就任务就会被强制杀死:

13f94a56f0804c0f048d38317a6ea991.png

解决方法:当所需要clone的版本库过大或服务器网速较差时,clone的时间会超过默认的10分钟。因此需要修改clone的超时时间。设置方法如下:

abd63e2e1d2ceaf0575762f542c26352.png743e346e-4f47-eb11-8da9-e4434bdf6706.svg

2

743e346e-4f47-eb11-8da9-e4434bdf6706.svg

Jenkins:Build step 'Execute Windows batch command' marked build as failure

71c0a6a74d9b46cbcb0895836f010cee.png

场景:使用Jenkins定时跑接口测试用例,明明所有的用例都执行成功了,但是还是会触发执行失败时的邮件通知,查看Jenkins控制台日志,发现是由于上面截图的原因导致的。

解决方法:在bat脚本(shell同样适用)最后一行加上exit 0,表示正常运行程序并退出程序。

743e346e-4f47-eb11-8da9-e4434bdf6706.svg

3

743e346e-4f47-eb11-8da9-e4434bdf6706.svg

Jenkins运行在Tomcat容器中

替换jar包的方法

背景:jenkins.war中引用的commons-fileupload-1.3.1-jenkins-2.jar被扫出来有安全隐患,需要替换到最新的1.4版本,因为扫描的时候是根据版本来的,如果直接采用覆盖并重命名的方法,还是会被扫出来,目前采取的方法是创建软连接。

1.先下载最新的commons-fileupload-1.4.jar;

2.创建软链接(管理员权限),Linux系统下同理;

3.把旧的commons-fileupload-1.3.1-jenkins-2.jar删除;

4.重启tomcat

743e346e-4f47-eb11-8da9-e4434bdf6706.svg

4

743e346e-4f47-eb11-8da9-e4434bdf6706.svg

Windows节点机无法运行jnlp文件

在节点机双击jnlp文件没有反应时,可以尝试用命令行方式运行此文件,cmd进入jnlp文件目录下,运行javaws slave-agent.jnlp,可以查看具体的错误提示,如下:

90b33ad5baf19b805508f992b8e4008a.png

上图中这种情况,只需要修改下java安全配置即可解决,其他情况再具体分析。

743e346e-4f47-eb11-8da9-e4434bdf6706.svg

5

743e346e-4f47-eb11-8da9-e4434bdf6706.svg

关闭CSRF防护

Jenkins v2.204.6之前的版本,要想关闭CSRF防护,只需要在全局安全配置中禁用相关配置即可,但是较高版本的 Jenkins 默认均开启CSRF防护且删除了禁用的入口。要想禁用CSRF防护,只能通过配置参数的方式。


Jenkins若是跑在Tomcat下,只需在tomcat启动脚本中加入配置如下:

若是以jar包形式部署的,只需在启动时加上配置参数即可。

743e346e-4f47-eb11-8da9-e4434bdf6706.svg

6

743e346e-4f47-eb11-8da9-e4434bdf6706.svg

修改 JVM 的内存配置

无论是以 Jdk Jar 方式运行Jenkins,还是将 War 包放在 Tomcat等容器下运行,都会存在一个问题:默认 JVM 内存分配太少,这导致启动或者运行一段时间后内存溢出报错 java.lang.OutOfMemoryError: PermGen spac。所以,需要在启动前修改配置文件中的JVM 内存配置。

这里的几个 JVM 参数含义如下:
-Xms: 使用的最小堆内存大小
-Xmx: 使用的最大堆内存大小
-XX:PermSize: 内存的永久保存区域大小
-XX:MaxPermSize: 最大内存的永久保存区域大小这几个参数也不是配置越大越好,具体要根据所在机器实际内存和使用大小配置。

743e346e-4f47-eb11-8da9-e4434bdf6706.svg

7

743e346e-4f47-eb11-8da9-e4434bdf6706.svg

配置优化减少磁盘空间占用

Job 构建历史较多时,如果没有配置好清理策略的话,会导致占用大量磁盘空间,最终可能会因磁盘空间不够而导致构建失败。并且在加载项目配置时,Jenkins也需要花费时间分析历史构建记录,页面加载的耗时会相应的增加。

丢弃旧的构建配置

c0b5ca4915fd07bcd2224d6962f105d5.png

如上图,配置最大保持 2 天之内的构建,如果超过 2 天的构建,则会在Job 执行前被清理掉,同时配置了最大保持构建数量为 30 个,意思就是如果 2 天内构建次数如果超过 30 次,则最多保留最近执行的 30 个构建。

使用Disk Uasge插件

不建议,使用此插件的过程中,发现可能会导致服务器卡顿。

定时清理tomcat日志

默认情况下,tomcat每天都会生成新的日志文件,且某些情况下,产生的日志文件体积会非常大,如果长期不清理,日志文件会越来越多,占用很多磁盘空间。

目前的处理方法是在Jenkins新建了一个定时任务,专门用来删除tomcat产生的日志文件。

3b813a05547b8b1cdeb5597b599909d2.png743e346e-4f47-eb11-8da9-e4434bdf6706.svg

8

743e346e-4f47-eb11-8da9-e4434bdf6706.svg

设置构建超时时间

有些 Job 在执行构建时,由于某些原因导致构建挂起,耗时比较长,而这些长时间挂起的 Job 会导致 Jenkins 内存占用比较大,性能下降,严重的会直接导致 Jenkins 挂掉。所以,我们需要设置构建超时时间来预防这种事情发生,一旦超过一定的时间,要让 Job 自动停止掉,如下:

97f0816c0b12a032a0b3d2a9a21a40d7.png743e346e-4f47-eb11-8da9-e4434bdf6706.svg

9

743e346e-4f47-eb11-8da9-e4434bdf6706.svg

设置全局属性

适当设置全局属性,可以避免在pipeline中重复写死一些固定值,例如输出日志地址、接口请求地址等等,而且当固定值需要修改时,只需要修改一次即可,不用去每个文件里面修改,方便维护。设置入口为:系统管理 -> 系统配置-> 全局属性-> Environment variables ,如下图:

2f97114016f9fe422bffe28dacda9d3d.png743e346e-4f47-eb11-8da9-e4434bdf6706.svg

10

743e346e-4f47-eb11-8da9-e4434bdf6706.svg

统一管理脚本

需要安装Managed script 插件,该插件是为了在管理文件时创建 Script 脚本文件,然后在 Job 中配置直接使用,方便脚本的统一管理和维护。插件安装完成后,进入“系统管理” —> “Managed files” ,点击 “Add a new Config” ,并选择 “Groovy file” 类型,创建一个新的 Groovy 脚本文件,然后输入我们要执行的脚本代码,如下:

391708c2d6774c72d2009d69d6d1c7e6.png

创建完毕后,我们在 Job 中构建处选择 “Execute managed script” 就可以使用这些脚本了。

743e346e-4f47-eb11-8da9-e4434bdf6706.svg

11

743e346e-4f47-eb11-8da9-e4434bdf6706.svg

轻量备份

使用ThinBackup 插件,允许我们对Jenkins配置信息进行全量或增量备份,由于插件不会保存构建历史和构建工件,所备份过程更为快捷,并且无需关闭Jenkins服务器。

c97d24f07533ea74e2509193bc22da0e.png

还原备份:

f3eac6b8aaf909693a5e1820aeb776a7.pngdf6d328d258c864241bf28fbb39ac4f2.gifEND2ba68eddc4128012ec47506993b12190.gif

1031f4f3b26df52183ee801ccb6aed1c.gif

推荐阅读

点击阅读☞记一次Jenkins项目的故障排查:邮件未能正常发送

点击阅读☞Windows系统下Jenkins集成Appium自动化测试(上)

点击阅读☞Windows系统下Jenkins集成Appium自动化测试(下)

点击阅读☞技术加持|Jenkins远程新增Mac节点

点击阅读☞Jenkins集成appium自动化测试(Windows篇)

a5a8802cc0d1f44da10b0c0dbf021c86.gif

7ebc08ece8cc8691c9ed2f8b196b7e38.png

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐