在同一台计算机上运行多个TeamCity代理?


86

我们有几台构建机器,每台都运行一个TeamCity构建代理。每台机器都很强大,我们想在同一台机器上运行多个构建代理。

这是可能的,而无需使用虚拟化?是否有TeamCity的高质量替代方案可以支持这一点?

Answers:


133

是的,有可能

可以在单个计算机上安装多个代理。它们充当单独的代理,而TeamCity与它们作为不同的代理一起工作,而不利用它们共享同一台计算机这一事实。安装一种代理后,如果满足以下条件,则可以安装另一种:

  • 代理安装在单独的目录中
  • 他们有独特的工作和临时目录
  • buildAgent.properties配置为对name和ownPort属性具有不同的值

确保没有指定绝对签出目录的构建配置(或者,确保此类构建配置启用了“ clean checkout”选项并且它们不能并行运行)。

在Windows下,要将其他代理作为服务安装,请修改[agent dir] \ launcher \ conf \ wrapper.conf 以将属性更改为在计算机中具有不同的名称:

  • wrapper.console.title
  • wrapper.ntservice.name
  • wrapper.ntservice.displayname
  • wrapper.ntservice.description

请注意,如果您的代理计算机没有必要的资源,则这样做几乎没有好处。例如,单核V​​M不能在具有三个代理的构建队列中工作,而要比使用一个代理快得多。
bopapa_1979 2013年

13
如果您不了解以上内容而去安装了代理程序(就像我一样),请在/ bin目录中已安装的Build Agent上运行“ service.uninstall.bat”,然后对每个代理程序执行以上回答。之后,在每个代理上运行“ service.start.bat”。
布兰登

2
辉煌。但是奇怪的是,安装向导不支​​持安装多个代理。
杰斯珀·迈金德

最好通知您,新代理在安装后可能会出现问题,例如“ Teamcity代理处于断开状态(Agent已注销(将升级))”之类的错误。可以通过停止fisrt代理(或安装的其他代理)并从服务(在Windows / Windows Server上)重新启动新代理来解决。这会将您的新代理从断开连接设置为已连接。
圣地亚哥·雷贝拉

注意:“如果你使用Windows安装程序安装其他代理,并希望运行代理的服务,则需要执行一些手动步骤安装第二剂是在同一台机器上的服务不是由安装程序支持:现有的服务被覆盖”。参见confluence.jetbrains.com/display/TCD10//… \
rsenna

30

1
我很高兴这篇博客文章对某些人有所帮助。但是,按照其中的说明破坏了我现有的服务。即使完全卸载了这两个服务,删除了两个目录并仅重新安装了原始服务,在我开始所有这一切之前,它仍然无法运行某些工作正常的作业。我强烈推荐最受好评的解决方案。
sirdank

3

最佳答案是正确的方法,但是如果您想更轻松地完成此操作,则可以使用TeamCityAgent Chocolatey软件包并提供代理名称,代理文件夹和端口--params,它将处理设置配置文件以及提取通过所需的Java版本server-jre

需要注意的一个问题是--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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.