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

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

这是可能的, 而不使用虚拟化 ? 是否有TeamCity的质量替代品支持这个?

是的, 这是可能的 :

几个代理可以安装在一台机器上。 他们作为独立的代理人工作,TeamCity作为不同的代理人工作,不利用他们共享同一台机器的事实。 安装一个代理后,您可以安装另外一个代理,只要满足以下条件:

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

确保没有指定绝对检出目录的构buildconfiguration(或者,确保这样的构buildconfiguration启用了“清理检出”选项,并且它们不能并行运行)。

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

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

最好的答案是正确的方法,但是如果你想更容易地完成这个,你可以使用TeamCityAgent的Chocolatey包,并提供代理名称,代理文件夹和端口作为--params ,它将处理设置configuration文件为以及通过server-jre软件包提供所需的Java版本。

有一点需要注意的是,你需要在第一个代理之后使用--force进行任何安装,因为Chocolatey目前不理解使用不同的configuration安装相同的应用程序作为“新”安装。

您还需要使用--version 2.0.1-beta-05因为这仍然处于testing阶段,但是应该尽快将其从beta --version 2.0.1-beta-05出来。

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