如何设置新的詹金斯奴隶

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

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

enter image description here

当我单击“查看日志以获取更多详细信息”链接时,我看到以下控制台输出:

[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.

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


答案 1

在 Jenkins 中添加一个奴隶非常简单。基本上,如果您使用的是unix从站,则需要对机器进行SSH访问。您还需要安装 Jenkins SSH Slaves 插件。完成此操作后,转到主服务器上“管理 Jenkins”选项,然后选择“管理节点”。

然后,步骤如下:

  1. 单击“新建节点”
  2. 选择“哑巴奴隶”并为其命名(象征性的,不需要是域名,稍后再说)
  3. 单击确定并进入配置页面
  4. 执行器数填写要在该节点上运行的同时进程数(通常不超过分配的 CPU 内核数)
  5. 远程 FS 根目录中填写您希望 Jenkins 存储其工作文件的完整路径
  6. (可选)添加标签(如果您在系统中使用这些标签(在许多情况下不是必需的,但您的项目可能要求节点具有某些标签才能在特定作业的执行器池中)
  7. 在“启动方法”下选择“通过 SSH 在 Unix 计算机上启动从属代理程序”(如果尚未选择)
  8. 将完全限定的域名放在“启动方法”行下显示的“主机”字段中

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


答案 2

我遇到了与你完全相同的问题,在我的情况下,这是因为我没有在Ubuntu上安装ssh服务器。


推荐