Jenkins工作因暂时失去连接而停止时如何恢复?

时间:2017-04-28 21:08:49

标签: jenkins

我正在开展一个包含数百个Jenkins工作的项目,其中一些工作运行了几个小时(7,8,甚至10个小时)的自动化测试。不幸的是,我们遇到了网络问题(WAN),至少每天一次我们失去连接几分钟。然后作业失败,因为“代理脱机”:

Agent went offline during the build ERROR: Connection was broken: java.io.IOException: Unexpected termination of the channel at hudson.remoting.SynchronousCommandTransport$ReaderThread.run(SynchronousCommandTransport.java:73) Caused by: java.io.EOFException at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2332) at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2801) at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:801) at java.io.ObjectInputStream.<init>(ObjectInputStream.java:299) at hudson.remoting.ObjectInputStreamEx.<init>(ObjectInputStreamEx.java:48) at hudson.remoting.AbstractSynchronousByteArrayCommandTransport.read(AbstractSynchronousByteArrayCommandTransport.java:34) at hudson.remoting.SynchronousCommandTransport$ReaderThread.run(SynchronousCommandTransport.java:59)

根据我的理解,Jenkins master使用每个slave中的代理来请求运行新作业。在我的项目中,一旦完成,所有测试都在本地而不是远程运行。因此,从属设备可以(应该?)继续在后台运行作业,并且当连接恢复到主设备时,它可以赶上从属日志和状态。我不深入了解詹金斯的架构,但这听起来不是一件不可能完成的任务。

所以这让我想到了一个问题:是否有可能进行这样的恢复?是否有可能让从站与主站隔离一段时间?我相信其他Jenkins用户之前遇到过这个问题。

0 个答案:

没有答案