无法通过 SSH 在 Jenkins 中启动从站 - 没有错误
Cannot launch slaves in Jenkins via SSH - no errors
我在 Unix 系统上安装了一个 Jenkins master (OEL)。我配置了两个通过 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 从主系统连接到从属系统,没问题。我还可以使用 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!
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)
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 根本无法连接到 slave,但我不确定为什么。
- 主系统上的$JENKINS_HOME/logs/slaves/SLAVE_NAME 下没有日志文件。每个奴隶的目录都在那里,但它们是空的。
- 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 启动一个 slave 时,netstat returns 在我为 slave grep 时不匹配。
看起来 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)
如前所述,升级到 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 中遇到以下错误:
- Failing to launch SSH slave agents after upgrade to 1.498 (16284)
- SSH slave connection issues after Jenkins update (16482)
我卸载了 ruby-runtime 插件并再次通过 SSH 启动从服务器。
我遇到另一个 "weird" 导致从服务器无法启动的原因。
用于 ssh 的用户 jenkins 的 .bashrc 包含带有 "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
命令就可以了。
我在 Unix 系统上安装了一个 Jenkins master (OEL)。我配置了两个通过 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 从主系统连接到从属系统,没问题。我还可以使用 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!
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)
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 根本无法连接到 slave,但我不确定为什么。
- 主系统上的$JENKINS_HOME/logs/slaves/SLAVE_NAME 下没有日志文件。每个奴隶的目录都在那里,但它们是空的。
- 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 启动一个 slave 时,netstat returns 在我为 slave grep 时不匹配。
看起来 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)
如前所述,升级到 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 中遇到以下错误:
- Failing to launch SSH slave agents after upgrade to 1.498 (16284)
- SSH slave connection issues after Jenkins update (16482)
我卸载了 ruby-runtime 插件并再次通过 SSH 启动从服务器。
我遇到另一个 "weird" 导致从服务器无法启动的原因。
用于 ssh 的用户 jenkins 的 .bashrc 包含带有 "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
命令就可以了。