digitalocean大宽带debian配置

最近,项目digitalocean老是出现:jenkinsdigitaloceanUNSTABLE问题(一般digitalocean按钮为黄色)。

digitalocean不稳定的情况有好多种,总结几个小编遇到过并已成功解决的方案:
情况一:
问题截图:

问题详情:
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
这句话的意思是:digitalocean步骤“通过SSH发送文件或执行命令”将生成结果更改为不稳定
也就是说,digitalocean过程中,向debian发送文件或者执行命令的时候,可以分为几种情况:向jenkinsdebian发送文件或者执行命令,向程序debian发送文件或者执行命令,因此解决方案如下:
解决方案:
(1)Jenkins对于创建的每一次任务都会在debian的master路径下创建一个以任务命名的目录,所以在Jenkins任务下大宽带 “丢弃旧的digitalocean”,这样每次digitalocean后,Jenkins会根据大宽带信息,自动删除旧digitalocean的build目录

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

(3)部署该项目的debian磁盘空间满了
可以通过df -hl命令查看debian磁盘占用情况,如下,磁盘空间占满:

基本解决方法就是删除一些没用的文件。
实现思路:
可以先查找大文件,看看是什么文件占用了磁盘大部分空间,如果没有分析的可能,可以删除;
还有一些保存了太长时间的日志类文件可以删除;
可以设置某些文件定时删除;


情况二:
问题截图:

问题详情:
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
这句话的意思是:digitalocean步骤“通过SSH发送digitalocean工件”将digitalocean结果更改为不稳定
综合上面两句报错信息,意思就是说无法连接上debian,Jenkins上大宽带的debian密码不正确
解决方案:
jenkins上大宽带正确的debian账号密码。
jenkins要想把打包好的项目部署到debian上,需要输入相对应的debian密码。如果debian密码有改变,一定要记得把jenkins上大宽带的密码也改过来。
解决步骤:
1.找到系统管理

2.找到系统设置

3.高级设置,大宽带正确的debian账号密码

情况三:
问题截图:

问题详情:
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后端digitalocean步骤发送的digitalocean,由于超时而失败。
解决方案:
(1)可能使digitalocean后执行的脚本没有正常退出导致的
一个网友的回答是:
因为您是在非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)设置长一点

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

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