Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
强制jenkins slave使用内部主机?_Jenkins - Fatal编程技术网

强制jenkins slave使用内部主机?

强制jenkins slave使用内部主机?,jenkins,Jenkins,如何通过实际JNLP连接的run命令强制jenkins从机连接到内部主机名 下面是关于实际问题的更多信息(假域名) 主广播: 主内部地址: 环境:Docker容器 命令行: java -jar slave.jar \ -jnlpUrl http://jenkins.fakehost.internal/computer/SLAVE_NAME/slave-agent.jnlp \ -secret SECRET; 输出 Sep 04, 2016 5:21:38 PM hud

如何通过实际JNLP连接的run命令强制jenkins从机连接到内部主机名

下面是关于实际问题的更多信息(假域名)


  • 主广播:
  • 主内部地址:
  • 环境:Docker容器
命令行:

java -jar slave.jar \
     -jnlpUrl http://jenkins.fakehost.internal/computer/SLAVE_NAME/slave-agent.jnlp \
     -secret SECRET;
输出

Sep 04, 2016 5:21:38 PM hudson.remoting.jnlp.Main$CuiListener status
9/5/2016 1:21:38 AMINFO: Locating server among [https://jenkins.fakehost.com/, http://jenkins-internal.fakehost.com/]
9/5/2016 1:21:38 AMSep 04, 2016 5:21:38 PM hudson.remoting.jnlp.Main$CuiListener status
9/5/2016 1:21:38 AMINFO: Handshaking
9/5/2016 1:21:38 AMSep 04, 2016 5:21:38 PM hudson.remoting.jnlp.Main$CuiListener status
9/5/2016 1:21:38 AMINFO: Connecting to jenkins.fakehost.com:50000
随后导致了一场战争

9/5/2016 1:23:56 AM java.net.ConnectException: Connection timed out
9/5/2016 1:23:56 AM at java.net.PlainSocketImpl.socketConnect(Native Method)
9/5/2016 1:23:56 AM at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
9/5/2016 1:23:56 AM at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
9/5/2016 1:23:56 AM at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
9/5/2016 1:23:56 AM at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
9/5/2016 1:23:56 AM at java.net.Socket.connect(Socket.java:589)
9/5/2016 1:23:56 AM at java.net.Socket.connect(Socket.java:538)
9/5/2016 1:23:56 AM at hudson.remoting.Engine.connect(Engine.java:369)
9/5/2016 1:23:56 AM at hudson.remoting.Engine.run(Engine.java:267)
问题是,尽管提供了内部主机名,但从属代理仍尝试检查其公共主机名。并作为其https端口,但不是50k内部端口有效。无望地试图到达它无法到达的港口


我一直试图绕过命令,强制它使用从机支持的内部主机名来阻止slave.jar之前的公共主机

echo "127.0.0.1 jenkins.fakehost.com" >> /etc/hosts
这将强制从属服务器通过备用的给定主机名进行连接

最后,我修改了docker容器() 允许我在jenkins启动之前运行“命令”


注意:问题悬而未决,要获得一个不太老套的答案=)

在JNLP从机的“高级配置”选项卡中,有一个通过
的隧道连接选项


输入
jenkins.fakehost.internal:
应该可以解决问题。

对于隧道连接:是用于http端口,还是用于jnlp连接的jnlp端口(50000)。http(s)部分在您这边已经可以正常工作了(只传递JNLP连接细节)。失败的是在此之后启动的JNLP连接建立。通过配置隧道,您可以覆盖Jenkins关于其运行位置的想法(即,在初始HTTP部分中传递的JNLP连接信息)。