【问题标题】:How to set up new Jenkins slave如何设置新的 Jenkins slave
【发布时间】:2013-03-18 12:51:37
【问题描述】:

我最近继承了一个由 Jenkins 驱动的 Java 项目,该项目的主要开发人员刚刚升职并退出。他已将 Jenkins WAR 部署到虚拟服务器上的 Tomcat 实例,这就是所谓的“构建服务器”。

此构建服务器配置了一个从属服务器,用于构建和部署到另一个虚拟服务器 myserver.example.com。上周末,系统人员停用了 myserver.example.com 虚拟所​​在的物理服务器,为配置为部署到该从属服务器的任何 Jenkins 作业产生了以下异常:

当我点击“查看日志了解更多详情”链接时,我看到以下控制台输出:

[03/18/13 08:13:31] [SSH] Opening SSH connection to myserver.example.com:22.
java.io.IOException: There was a problem while connecting to myserver.example.com:22
    at com.trilead.ssh2.Connection.connect(Connection.java:755)
    at com.trilead.ssh2.Connection.connect(Connection.java:546)
    at hudson.plugins.sshslaves.SSHLauncher.openConnection(SSHLauncher.java:650)
    at hudson.plugins.sshslaves.SSHLauncher.launch(SSHLauncher.java:283)
    at hudson.slaves.SlaveComputer$1.call(SlaveComputer.java:200)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)
Caused by: java.net.NoRouteToHostException: No route to host
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
    at java.net.Socket.connect(Socket.java:529)
    at com.trilead.ssh2.transport.TransportManager.establishConnection(TransportManager.java:342)
    at com.trilead.ssh2.transport.TransportManager.initialize(TransportManager.java:450)
    at com.trilead.ssh2.Connection.connect(Connection.java:699)
... 9 more
[03/18/13 08:13:34] [SSH] Connection closed.

这是有道理的,因为从属设备(myserver.example.com 虚拟)处于离线状态。但是,以前没有真正的 Jenkins 经验,我不确定配置 Jenkins 主机以将这些作业构建/部署到新从机的正确步骤,以及如何设置新从机。例如,我是否需要在新的从属设备上安装任何东西,或者进行任何类型的设置/配置?提前致谢!

【问题讨论】:

    标签: java jenkins continuous-integration virtual-server


    【解决方案1】:

    在 Jenkins 中添加一个 slave 非常简单。基本上,如果您使用的是 unix 从站,则需要通过 SSH 访问机器。您还需要安装 Jenkins SSH Slaves 插件。完成后,转到 Master 上的 Manage Jenkins 选项,然后选择 Manage Nodes

    接下来的步骤是:

    1. 点击新建节点
    2. 选择Dumb Slave并给它一个名字(象征性的,不需要是域名,后面会出现)
    3. 点击确定进入配置页面
    4. # of executors 中填写您希望在该节点上同时运行的进程数(通常不超过分配的 CPU 内核数)
    5. Remote FS Root 中填写您希望 Jenkins 存储其工作文件的位置的完整路径
    6. 如果您在系统中使用这些标签,可以选择添加 标签(在许多情况下不需要,但您的项目可能要求节点具有特定标签才能在特定作业的执行器池中)李>
    7. 选择Launch Method下的Launch slave agent via SSH(如果尚未选择)
    8. 将完全限定域名放入 Launch Method 行下方的 Host 字段中

    关于安装在从属设备上的工具有一些假设。如果您有专门的工具,您可能需要单独安装它们(或查看在执行前立即处理移动工具的插件)。但是,如果您的节点是基于一个模板构建的,该模板上有您的所有构建工具(可能是 java、ant 等),那么这就是您需要做的所有事情。

    【讨论】:

    • 我已经在我的 linux 机器上运行的 tomcat 上部署了 jenkins.war 文件。我需要在 Windows 机器上设置 slave。但我无法这样做。slave 上的 Jenkins Slave 窗口显示试图连接但没有连接。请帮助我在上面提到的第 7 步中到底需要做什么
    • 我尝试在没有 tomcat 的情况下运行 jenkins.war,它能够在 windows 机器上设置 slave。但我需要 jenkins 才能在 Tomcat 上运行。请帮助
    • 刚刚去配置全局安全->启用安全->JNLP从代理的TCP端口中的端口号添加到端口号
    • @jeevans 您可能应该寻找另一个答案或针对您的具体情况创建自己的问题。如上所述,我的 cmets 用于 SSH 启动的从属的 UNIX 实现,不适用于 Windows 上 Tomcat 托管的从属。干杯。
    • @tarabyte 我会看看是否可以进行一些更改来澄清这一点。这些步骤将在主服务器上执行。对于从服务器,您不需要在通过“管理节点”窗格启动代理之前停止 GUI。至于 Host 字段,在您选择 SSH 后,它会出现在 Launch Method 下方(在我的机器上是默认设置)。
    【解决方案2】:

    我遇到了和你一样的问题,就我而言,这是因为我没有在 Ubuntu 上安装 ssh 服务器。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-21
    • 1970-01-01
    • 2016-03-15
    • 2016-04-17
    • 1970-01-01
    相关资源
    最近更新 更多