无法通过SSH在Jenkins中启动奴隶 - 没有错误

时间:2015-01-06 01:04:00

标签: jenkins

我在Unix系统上安装了Jenkins主服务器(OEL)。我配置了两个Unix slave(也就是OEL)来通过SSH启动。奴隶永远不会被启动,并且主人的GUI中没有报告错误(根本没有输出,只是旋转球):

Start slave status: spinning wheel...

我在jenkins.log文件中看到的唯一警告是:

WARNING: Cron is not defined. WARNING: Making sc11136233 offline because it’s not responding WARNING: Making sc11136289 (OEL 6.5) offline because it’s not responding

我可以通过SSH作为同一个用户从主系统连接到从系统,没问题。我也可以使用Java程序从主服务器连接到从服务器,与Jenkins使用的用户相同(使用JSch):`

[jenkins@slcn03vmf0256 debug]$ java -classpath JSch:. SSHExeCommand Establishing Connection to sc11136289... Connection established. Preparing for command execution. Executing command: ls. 1 : bash_logout 2 : bash_profile 3 : bashrc 4 : bashrc-DEFAULT 5 : cshrc 6 : cshrc-DEFAULT 7 : cshrc-DEFAULT.06292004 8 : cshrc-DEFAULT_old 9 : emacs 10 : now.txt 11 : screenrc Done!

主服务器上的JDK版本是:

$ java -version java version "1.7.0_71" Java(TM) SE Runtime Environment (build 1.7.0_71-b14) Java HotSpot(TM) Server VM (build 24.71-b01, mixed mode)

奴隶上的Java版本:

$ java -version java version "1.7.0_45" OpenJDK Runtime Environment (rhel-2.4.3.4.0.1.el6_5-x86_64 u45-b15) OpenJDK 64-Bit Server VM (build 24.45-b08, mixed mode)

看起来Jenkins根本无法连接到奴隶,但我不确定原因。

  1. 主系统上的$ JENKINS_HOME / logs / slaves / SLAVE_NAME下没有日志文件。每个奴隶的目录都在那里,但它们都是空的。
  2. Jenkins也没有将任何文件复制到从属系统。
  3. 我尝试在奴隶系统上观看/var/log/secure时启动了一个奴隶(相当于auth.log),但是这个文件没有得到更新。
  4. 执行我的Java SSH测试程序时,我可以在主系统上看到以下netstat:

    [jenkins@slcn03vmf0256 debug]$ netstat -a | grep sc111
    tcp        0      0 slcn03vmf0256:32508 sc11136289:ssh ESTABLISHED
    

    但是,当我尝试从Jenkins启动一个奴隶时,当我为奴隶寻找时,netstat不会返回匹配。

  5. 看起来Jenkins没有启动任何SSH连接。

    将Jenkins升级到版本1.607后,在尝试启动从站时出现以下错误:

    ERROR: Unexpected error in launching a slave. This is probably a bug in Jenkins
    org.jruby.exceptions.RaiseException: (NameError) undefined local variable or method `listener' for #<Jenkins::Slaves::ComputerListenerProxy:0x1c0ee3>
    at RUBY.preLaunch(/var/lib/jenkins/plugins/nodeofflinenotification/WEB-INF/classes/vendor/gems/bundler/gems/jenkins-plugin-runtime-39cc789729c0/lib/jenkins/slaves/computer_listener_proxy.rb:6)
    

2 个答案:

答案 0 :(得分:1)

如前所述,升级到1.607后,我在尝试启动奴隶时收到错误消息:

ERROR: Unexpected error in launching a slave. This is probably a bug in Jenkins
org.jruby.exceptions.RaiseException: (NameError) undefined local variable or method `listener' for #<Jenkins::Slaves::ComputerListenerProxy:0x1c0ee3>
at RUBY.preLaunch(/var/lib/jenkins/plugins/nodeofflinenotification/WEB-INF/classes/vendor/gems/bundler/gems/jenkins-plugin-runtime-39cc789729c0/lib/jenkins/slaves/computer_listener_proxy.rb:6)

这导致我在Jenkins中出现以下错误:

我卸载了 ruby​​-runtime 插件,并通过SSH启动从站再次工作。

答案 1 :(得分:0)

我遇到另一个“怪异”的原因,因为奴隶无法启动。

用户 jenkins 的.bashrc用于ssh包含一行“su root”,导致slave在ssh init上挂起。

我的日志结尾是:

[04/24/17 11:19:50] [SSH] Checking java version of java
[04/24/17 11:19:55] [SSH] java -version returned 1.7.0_80.
[04/24/17 11:19:55] [SSH] Starting sftp client.

只需删除这个愚蠢的su命令就可以了。