jenkins构建UNSTABLE原因及解决方案一二三四五(不断更新中。。。)

最近,项目构建老是出现:jenkins构建UNSTABLE问题(一般构建按钮为黄色)。

构建不稳定的情况有好多种,总结几个小编遇到过并已成功解决的方案:

情况一:

问题截图:

问题详情:

ERROR: Exception when publishing, exception message [Failure]

Build step 'Send files or execute commands over SSH' changed build result to UNSTABLE

Started calculate disk usage of build

Finished Calculation of disk usage of build in 0 seconds

Started calculate disk usage of workspace

Finished Calculation of disk usage of workspace in 0 seconds

An attempt to send an e-mail to empty list of recipients, ignored.

Finished: UNSTABLE

分析原因:

Build step 'Send files or execute commands over SSH' changed build result to UNSTABLE

这句话的意思是:构建步骤“通过SSH发送文件或执行命令”将生成结果更改为不稳定

也就是说,构建过程中,向服务器发送文件或者执行命令的时候,可以分为几种情况:向jenkins服务器发送文件或者执行命令,向程序服务器发送文件或者执行命令,因此解决方案如下:

解决方案:

(1)Jenkins对于创建的每一次任务都会在服务器的master路径下创建一个以任务命名的目录,所以在Jenkins任务下配置 “丢弃旧的构建”,这样每次构建后,Jenkins会根据配置信息,自动删除旧构建的build目录

(2)workspace目录是任务构建的工作目录,含有的内容比较多比如:maven模块checkout出来的代码,编译后打包的文件,构建执行脚本的日志以及监控日志。而且即使你配置了“丢弃旧的构建”,也不会删除workspace目录下的文件,所以每次有构建任务的时候都会在workspace目录生成日志、监控报告等其他文件,需要手动处理(如下图)或者写个定时任务自动清理(大家自己动手去查查噻~~~)这个目录。’

(3)部署该项目的服务器磁盘空间满了

可以通过df -hl命令查看服务器磁盘占用情况,如下,磁盘空间占满:

基本解决方法就是删除一些没用的文件。

实现思路:

可以先查找大文件,看看是什么文件占用了磁盘大部分空间,如果没有分析的可能,可以删除;

还有一些保存了太长时间的日志类文件可以删除;

可以设置某些文件定时删除;

情况二:

问题截图:

问题详情:

ERROR: Exception when publishing, exception message [Failed to connect and initialize SSH connection. Message: [Failed to connect session for config XXXXXX. Message [java.net.NoRouteToHostException: 没有到主机的路由 (Host unreachable)]]]

Build step 'Send build artifacts over SSH' changed build result to UNSTABLE

Started calculate disk usage of build

Finished Calculation of disk usage of build in 0 seconds

Started calculate disk usage of workspace

Finished Calculation of disk usage of workspace in  3 second

Finished: UNSTABLE

分析原因:

[Failed to connect session for config XXXXXX. Message [java.net.NoRouteToHostException: 没有到主机的路由 (Host unreachable)]]]

这句话的意思是:[无法连接配置XXXXXX的会话。信息[java.net.NoRouteToHostException:没有到主机的路由 (无法访问主机)]]]

Build step 'Send build artifacts over SSH' changed build result to UNSTABLE

这句话的意思是:构建步骤“通过SSH发送构建工件”将构建结果更改为不稳定

综合上面两句报错信息,意思就是说无法连接上服务器,Jenkins上配置的服务器密码不正确

解决方案:

jenkins上配置正确的服务器账号密码。

jenkins要想把打包好的项目部署到服务器上,需要输入相对应的服务器密码。如果服务器密码有改变,一定要记得把jenkins上配置的密码也改过来。

解决步骤:

1.找到系统管理

2.找到系统设置

3.高级设置,配置正确的服务器账号密码

情况三:

问题截图:

问题详情:

ERROR: Exception when publishing, exception message [Exec timed out or was interrupted after 120,001 ms]

Build step 'Send build artifacts over SSH' changed build result to UNSTABLE

Started calculate disk usage of build

Finished Calculation of disk usage of build in 0 seconds

Started calculate disk usage of workspace

Finished Calculation of disk usage of workspace in 0 seconds

Finished: UNSTABLE

分析原因:

Exception when publishing, exception message [Exec timed out or was interrupted after 120,001 ms]

这句话的意思是:发布时出现异常,异常消息[Exec超时或在120012毫秒后被中断]

也就是说,您已经为通过SSH发布设置了超时,可能有一个通过SSH后端构建步骤发送的构建,由于超时而失败。

解决方案:

(1)可能使构建后执行的脚本没有正常退出导致的

一个网友的回答是:

因为您是在非TTY环境中执行脚本;jenkins无法从您的脚本中正确退出。

您想要的是在脚本执行后立即退出!不要等待整个超时发生,然后不正确地断开连接。

因此,我们设置让脚本在TTY环境中执行,步骤:

jenkins配置中,将Send build artifacts over SSH配置中选择高级,勾选Exec in pty:

关于这个解决方案,小编亲自尝试使用,没有起到效果

小编查了下TTY和pty环境,但是没有得到一个清晰的解释,不知道有没有大佬能给解释一下噻

(2)Exec timeout (ms)这个设置导致的。

系统给设置了默认脚本执行的超时时间12000ms,可能因为网络或者处理脚本复杂或者其他的缘故,偶尔会执行超过2分钟。此时就会因为超时而失败了。解决方法就是改大一些兼容时间过长的情况就好了。

配置步骤:

jenkins配置中,将Send build artifacts over SSH配置中选择高级,将Exec timeout (ms)设置长一点

情况四五六七八九。。。。。。

总结:遇到了这么多次构建不稳定,每次都是盲目的解决,没有仔细分析报错信息,其实报错信息提示的都很详细了,在此总结记录一下

猜你喜欢

转载自blog.csdn.net/hejingfang123/article/details/121320180