【发布时间】:2015-03-03 15:23:53
【问题描述】:
我在 Unix 系统 (OEL) 上安装了 Jenkins master。我配置了两个通过 SSH 启动的 Unix 从站(也是 OEL)。从站永远不会启动,并且在主站的 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 从主系统连接到从系统,没问题。我还可以使用 Jenkins 使用的同一用户(使用 JSch)使用 Java 程序从主连接到从站:`
[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!
master上的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)
slave 上的 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 根本无法连接到从站,但我不知道为什么。
- 主系统上的 $JENKINS_HOME/logs/slaves/SLAVE_NAME 下没有日志文件。每个从站的目录都在那里,但它们是空的。
- Jenkins 也没有将其任何文件复制到从属系统。
- 我尝试在从属系统(相当于 auth.log)上观看
/var/log/secure时启动一个从属,但该文件没有得到更新。 -
在执行我的 Java SSH 测试程序时,我可以在主系统上使用 netstat 看到以下内容:
[jenkins@slcn03vmf0256 debug]$ netstat -a | grep sc111 tcp 0 0 slcn03vmf0256:32508 sc11136289:ssh ESTABLISHED但是,当我尝试从 Jenkins 启动从属服务器时,当我对从属服务器进行 grep 时,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)
【问题讨论】:
-
您使用的是 Jenkins 的更新版本吗?可以从slave访问master吗?
-
您可以使用 netstat 或 lsof 来了解更多详细信息,例如 Jenkins 能够连接,但随后被卡住了。也许詹金斯无法将其 slave.jar 复制到目标?仔细检查您的凭据是否有任何错误。如果可以的话,您还应该检查从属主机上的 auth.log(或等效文件)。
-
其他一些调试技巧:1) 您的 Jenkins master 是否启用了安全性?如果是这样,请确保您已登录并有权查看从属日志(这是查看或配置从属日志的权限,我将使用配置来确保)。 2) 检查master上的$JENKINS_HOME/logs/slaves/SLAVE_NAME是否有任何内容。
-
这是 Jenkins 1.590。是的,我也可以通过 ssh 从从站连接到主站。
-
@gareth_bowles $JENKINS_HOME/logs/slaves/SLAVE_NAME 下没有日志文件。每个从站的目录都在那里,但它们是空的。我启用了安全性,只是从矩阵更改为“登录用户可以做任何事情”。我登录了,还是一样的问题。我还启用了“从属到主访问控制”。没有变化。
标签: jenkins