2009-11-24 91 views
76

我们有几个构建机器,每个构建机器都运行一个TeamCity构建代理。每台机器都非常强大,我们希望在同一台机器上运行多个构建代理。在同一台计算机上运行多个TeamCity代理?

这是可能的,不使用虚拟化?是否有TeamCity的优质替代品支持这一点?

回答

118

是,it's possible

一些代理可以在一台机器上安装。他们作为独立的代理人工作,TeamCity作为不同的代理人工作,而不是利用他们共享同一台计算机的事实。

  • 代理安装在不同的目录
  • 他们有独特的工作和临时目录
  • buildAgent.properties配置: 安装一个代理,你可以安装额外的一个,提供满足以下条件后为名称和自身的端口属性设置不同的值

确保没有指定了绝对检出目录的生成配置(或者,确保生成配置文件ns启用了“clean checkout”选项并且它们不能并行运行)。

在Windows下,安装其他代理服务项目,修改[代理DIR] \启动\的conf \ wrapper.conf 改变的属性在计算机内有不同的名称:

  • 包装。 console.title
  • wrapper.ntservice.name
  • wrapper.ntservice.displayname
  • wrapper.ntservice.description
+1

谢谢,这个工作很容易地适合我。 – Alexis

+0

只是一句话,但请记住,如果您的代理机器没有必要的资源,那么这样做几乎没有什么好处。例如,单核虚拟机不能通过具有三个代理的构建队列比使用一个代理更快。 –

+11

如果你已经在不知道上述情况的情况下离开并安装了你的代理(比如我),请在/ bin目录中的已安装的Build Agent上运行“service.uninstall.bat”,然后按照上面的答案对每个代理进行操作。之后,在每个代理上运行“service.start.bat”。 – Brandon

28
+1

发现此帖是最有用的......谢谢 –

+0

我是很高兴这篇博文帮助了一些人。但是,按照指示破坏了我现有的服务。即使在完全卸载这两个服务之后,删除这两个目录并仅重新安装原始服务,但在开始所有这些之前,它仍然不会运行一些工作正常的作业。我强烈推荐顶级答案的解决方案。 – sirdank

1

顶端回答是正确的方法,但是如果你想更轻松地完成这个,你可以使用TeamCityAgent Chocolatey package,并提供代理名称,代理文件夹和端口--params,它将处理设置配置文件以及通过server-jre程序包提取所需版本的Java。

需要注意的是,在第一个代理之后的任何安装中,您需要使用--force,因为Chocolatey目前不了解将具有不同配置的相同应用程序安装为“新”安装。

您还需要使用--version 2.0.1-beta-05,因为这仍处于测试阶段,但应尽快将其从Beta版中删除。

全部为第二代理安装例如: choco install teamcityagent --force -y --params 'serverUrl=http://teamcity.local:8111 agentName=AgentUno agentDir=C:\buildAgentUno ownPort=9091' --version 2.0.1-beta-05

相关问题