我使用来自udeploy步骤的以下命令来调用Jenkins作业。我需要等待作业完成,然后继续执行udeploy中的进一步步骤。
无论我是直接从服务器上的shell调用jenkins作业,还是从Udeploy中的Shell步骤调用jenkins作业,问题都是一样的。
Cmd:- java -jar jenkins-cli.jar -s -remoting -s --用户名--密码‘“
短期运行作业的输出(几分钟)
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作业完成得很好*返回到shell的状态如下
Aug 03, 2018 11:42:53 AM hudson.cli.CLI _main
WARNING: Failed to authenticate with your SSH keys. Proceeding as anonymous
Started Job #1
Aug 03, 2018 1:54:36 PM hudson.remoting.SynchronousCommandTransport$ReaderThread run
SEVERE: I/O error in channel CLI connection to <URL>
java.net.SocketException: Connection timed out (Read failed)
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
at java.net.SocketInputStream.read(SocketInputStream.java:171)
at java.net.SocketInputStream.read(SocketInputStream.java:141)
at java.io.FilterInputStream.read(FilterInputStream.java:133)
at java.io.FilterInputStream.read(FilterInputStream.java:107)
at javax.crypto.CipherInputStream.getMoreData(CipherInputStream.java:114)
at javax.crypto.CipherInputStream.read(CipherInputStream.java:239)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
at java.io.BufferedInputStream.read(BufferedInputStream.java:265)
at hudson.remoting.FlightRecorderInputStream.read(FlightRecorderInputStream.java:91)
at hudson.remoting.ChunkedInputStream.readHeader(ChunkedInputStream.java:72)
at hudson.remoting.ChunkedInputStream.readUntilBreak(ChunkedInputStream.java:103)
at hudson.remoting.ChunkedCommandTransport.readBlock(ChunkedCommandTransport.java:39)
at hudson.remoting.AbstractSynchronousByteArrayCommandTransport.read(AbstractSynchronousByteArrayCommandTransport.java:35)
at hudson.remoting.SynchronousCommandTransport$ReaderThread.run(SynchronousCommandTransport.java:63)
hudson.remoting.RequestAbortedException: java.net.SocketException: Connection timed out (Read failed)
at hudson.remoting.Request.abort(Request.java:329)
at hudson.remoting.Channel.terminate(Channel.java:992)
at hudson.remoting.SynchronousCommandTransport$ReaderThread.run(SynchronousCommandTransport.java:96)
Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to CLI connection to <URL>
at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1693)
at hudson.remoting.Request.call(Request.java:192)
at hudson.remoting.Channel.call(Channel.java:907)
at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:281)
at com.sun.proxy.$Proxy3.main(Unknown Source)
at hudson.cli.CLI.execute(CLI.java:380)
at hudson.cli.CLI._main(CLI.java:644)
at hudson.cli.CLI.main(CLI.java:426)
Caused by: java.net.SocketException: Connection timed out (Read failed)
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
at java.net.SocketInputStream.read(SocketInputStream.java:171)
at java.net.SocketInputStream.read(SocketInputStream.java:141)
at java.io.FilterInputStream.read(FilterInputStream.java:133)
at java.io.FilterInputStream.read(FilterInputStream.java:107)
at javax.crypto.CipherInputStream.getMoreData(CipherInputStream.java:114)
at javax.crypto.CipherInputStream.read(CipherInputStream.java:239)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
at java.io.BufferedInputStream.read(BufferedInputStream.java:265)
at hudson.remoting.FlightRecorderInputStream.read(FlightRecorderInputStream.java:91)
at hudson.remoting.ChunkedInputStream.readHeader(ChunkedInputStream.java:72)
at hudson.remoting.ChunkedInputStream.readUntilBreak(ChunkedInputStream.java:103)
at hudson.remoting.ChunkedCommandTransport.readBlock(ChunkedCommandTransport.java:39)
at hudson.remoting.AbstractSynchronousByteArrayCommandTransport.read(AbstractSynchronousByteArrayCommandTransport.java:35)
at hudson.remoting.SynchronousCommandTransport$ReaderThread.run(SynchronousCommandTransport.java:63)出于测试目的,即使在从配置上设置,也没有空闲时间。
在jenkins作业完成12分钟后抛出错误消息。即使作业需要4小时,它也成功地执行了作业,并在最后抛出了错误。
如果有连接性下降,那么当问题发生时,错误就会出现,而不是在作业完成之后。
我应该签入什么网络/防火墙来解决这个问题?我们没有为从连接设置任何特定端口。
tcpdump在较长的时间内非常大,用于检查何时会下降。有什么更好的方法来解决这个问题。
发布于 2018-08-03 15:06:23
听起来你的詹金斯主人和奴隶之间好像有什么东西在切断你的会话。要么是你的奴隶在你的构建过程中反应迟钝。我让Jenkins构建长达24小时,没有问题,构建的长度没有任何严格的限制。
如果我不得不猜测,您在主从之间有一个VPN隧道或NAT网关,而且由于构建没有向主报告任何内容,所以不会发送任何消息。VPN和NAT网关通常会结束在给定间隔内不发送任何数据的连接,以清除它们的连接表。SSH内置了一个使其保持活力的特性来解决这个问题。
在您的构建从服务器上,在/etc/ssh/ssh_config中尝试设置以下内容 (假设您使用的是openssh):
ServerAliveInterval 300这将告诉您的从站每5分钟发送一次no_op数据包,以确保中间网络设备不会终止您对您的连接。
它看起来不像Jenkins支持在主服务器端设置“保持活动”。。
https://stackoverflow.com/questions/51675244
复制相似问题