我使用udeploy Shell步骤中的followig命令来调用Jenkins作业。我需要等待工作完成,然后再继续进行udeploy中的步骤。
无论我是直接从服务器上的Shell还是从Udeploy中的Shell步骤调用jenkins作业,问题都是相同的。
命令:- java -jar jenkins-cli.jar -s -remoting build -s --username --password''
短期作业的输出(几分钟)
ExoPlayer.release
长时间运行的作业的输出(不确定确切的位置,但对于运行了一个小时的作业已经注意到了) *詹金斯的工作完成得很好 *返回外壳的状态是这个
Aug 03, 2018 3:55:09 PM hudson.cli.CLI _main
WARNING: Failed to authenticate with your SSH keys. Proceeding as anonymous
Started Job » SleepJob #4
Completed Job #4 : SUCCESS
出于测试目的,甚至没有在从属配置上设置空闲时间。
jenkins作业完成后12分钟将引发错误消息。即使该作业需要4个小时,它也会成功执行该作业,最后它会引发错误。
如果连接断开,则错误将在发生问题时出现,而并非总是在作业完成后出现。
我应该在网络/防火墙中检查些什么来解决此问题?我们没有为从属连接设置任何特定的端口。
tcpdump对于较大的持续时间来说非常大,以检查它何时准确下降。 有什么更好的方法来解决此问题。
答案 0 :(得分:0)
这听起来像您的Jenkins主服务器和从服务器之间存在某些断开您会话的连接。要么那个,要么您的奴隶在构建过程中变得无响应。我已经让Jenkins的构建进行了长达24小时的工作,没有任何问题,并且对构建时间的长度没有严格的限制。
如果我不得不猜测您的主服务器和从服务器之间有一个VPN隧道或NAT网关,并且由于构建没有向主服务器报告任何内容,那么什么也没发送。 VPN和NAT网关通常会终止在给定时间间隔内不发送任何数据的连接,以清除其连接表。 SSH具有内置的keepalive功能来解决此问题。
在构建从属服务器上,尝试在/ etc / ssh / ssh_config中使用setting the following(假设您使用的是openssh):
ServerAliveInterval 300
这将告诉您的从属设备每5分钟发送一次no_op数据包,以确保中间网络设备不会终止您的连接。
它看起来不像Jenkins supports setting keepalive on the master side yet。