jenkins奴隶工作失败的“意外终止渠道”

我目前正在看到我的构build中的一组错误。

这是预期的行为,如果你松了jenkins(说到盒子崩溃,或杀死-9)?

还是有更糟糕的事情发生(如一个不好的networking连接)?

堆栈和错误是:

hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:158) at $Proxy175.join(Unknown Source) at hudson.Launcher$RemoteLauncher$ProcImpl.join(Launcher.java:861) at hudson.Launcher$ProcStarter.join(Launcher.java:345) at hudson.tasks.CommandInterpreter.perform(CommandInterpreter.java:82) at hudson.tasks.CommandInterpreter.perform(CommandInterpreter.java:58) at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:19) at hudson.model.AbstractBuild$AbstractRunner.perform(AbstractBuild.java:703) at hudson.model.Build$RunnerImpl.build(Build.java:178) at hudson.model.Build$RunnerImpl.doRun(Build.java:139) at hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:473) at hudson.model.Run.run(Run.java:1410) at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46) at hudson.model.ResourceController.execute(ResourceController.java:88) at hudson.model.Executor.run(Executor.java:238) Caused by: hudson.remoting.RequestAbortedException: java.io.IOException: Unexpected termination of the channel at hudson.remoting.Request.abort(Request.java:273) at hudson.remoting.Channel.terminate(Channel.java:732) at hudson.remoting.Channel$ReaderThread.run(Channel.java:1157) Caused by: java.io.IOException: Unexpected termination of the channel at hudson.remoting.Channel$ReaderThread.run(Channel.java:1133) Caused by: java.io.EOFException at java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2554) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1297) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351) at hudson.remoting.Channel$ReaderThread.run(Channel.java:1127) 

如果Jenkins主站失去与从站的连接,您将看到该错误。 这可能是由于上面列出的三个问题中的任何一个:

  • 手工杀死奴隶的过程

  • 从属服务器变得不可用

  • 主站和从站之间的networking问题

从1.520开始,Jenkins需要Java 6或更高版本,这个错误的可能性之一就是你没有java 6或更高版本的slave / remote。 解决方法是使用java 6或更高版本更新远程计算机,或设置SSH在login到slave计算机时使用的正确的环境variables。

我解决了主Jenkins服务器的简单重启。

Java的版本必须是1.6(最新)或更新的jenkins1.531,我正在使用。

对于我的一个从节点,我发现必须在“启动方法”高级button“JavaPath”中为节点设置Javapath,才能正常工作。 问题是节点保持使用较旧版本的Java,我无法升级。

对于我来说节点configuration有一个错误的“远程FS根”。 因此,检查该从站节点的主站上的所有configuration参数是否正确。 jenkins不抱怨一件事,但终止连接。

在确定它是节点configuration之前,我挣扎了很多。 至less主人的错误信息应该是更明确或信息。

另外一个你可以看到这个错误(实际上导致这个错误)的地方是缺less内存/ CPU的内核。 我花了一些时间testing它,并通过增加Java堆大小(以及增加更多的内存到机器),增加了内核的数量(所以一台机器至less有4G内存与两个核心可用与一个构build插槽),还可以调整一些可以同时运行的打开的文件描述符和进程(如果你在linux上)。

我知道这个问题有点老,但是前些天我遇到了这个问题。

对于我来说,在安装JDK的过程中发生了问题。 安装失败是因为Windows的安全设置已设置,因此出现以下提示框:“您需要为此操作提供权限”,popup窗口,导致安装失败。

我将通知设置更改为“从不通知”,并解决了这个问题。

在CentOS Linux 7上,我发现Jenkins从站不能用于OpenJDK。 我试过Java 7和8.它需要Oracle Java。

因此,如果您在Linux上,请安装Oracle Java,并将path设置为指向它。 你可以用很多方法来做到这一点,例如:

  • 为启动slave的用户设置$JAVA_HOME ,并将其添加到$PATH
  • 使用update-alternatives来设置默认的java
  • 在Jenkins节点的Advanced设置下设置JavaPath