我在Unix系统上安装了Jenkins主服务器(OEL)。我配置了两个Unix slave(也就是OEL)来通过SSH启动。奴隶永远不会被启动,并且主人的GUI中没有报告错误(根本没有输出,只是旋转球):
我在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根本无法连接到奴隶,但我不确定原因。
/var/log/secure
时启动了一个奴隶(相当于auth.log),但是这个文件没有得到更新。执行我的Java SSH测试程序时,我可以在主系统上看到以下netstat:
[jenkins@slcn03vmf0256 debug]$ netstat -a | grep sc111
tcp 0 0 slcn03vmf0256:32508 sc11136289:ssh ESTABLISHED
但是,当我尝试从Jenkins启动一个奴隶时,当我为奴隶寻找时,netstat不会返回匹配。
看起来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)
答案 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
命令就可以了。