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

Continuous integration 在同一台计算机上运行多个TeamCity代理?,continuous-integration,teamcity,build-process,Continuous Integration,Teamcity,Build Process,我们有几个构建机器,每个机器运行一个TeamCity构建代理。每台机器都非常强大,我们希望在同一台机器上运行多个构建代理 这是否可能,不使用虚拟化?TeamCity是否有高质量的替代方案支持这一点 是的,: 可以在一台机器上安装多个代理。它们作为单独的代理,TeamCity作为不同的代理与它们合作,而不是利用它们共享同一台机器的事实。 安装一个代理后,如果满足以下条件,可以安装另一个代理: 代理安装在单独的目录中 他们有独特的工作和临时目录 buildAgent.properties配置为具有

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

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

是的,:

可以在一台机器上安装多个代理。它们作为单独的代理,TeamCity作为不同的代理与它们合作,而不是利用它们共享同一台机器的事实。 安装一个代理后,如果满足以下条件,可以安装另一个代理:

  • 代理安装在单独的目录中
  • 他们有独特的工作和临时目录
  • buildAgent.properties配置为具有不同的name和ownPort属性值
确保没有指定绝对签出目录的生成配置(或者,确保此类生成配置启用了“清除签出”选项,并且不能并行运行)

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

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

您也可以查看这篇博客文章,以获得分步指南


最重要的答案是正确的方法,但如果您想更轻松地完成此操作,可以使用,并提供代理名称、代理文件夹和端口作为
--params
,它将处理设置配置文件以及通过
服务器jre
包引入所需版本的Java

需要注意的一点是,在第一个代理之后,您需要在任何安装上使用
--force
,因为Chocolate目前不理解使用不同配置安装同一应用程序作为“新”安装

您还需要使用
——版本2.0.1-beta-05
,因为它仍处于测试阶段,但很快就会脱离beta版

第二个代理的完整安装示例:
choco安装teamcityagent--force-y--params的服务器URL=http://teamcity.local:8111 agentName=AgentUno agentDir=C:\buildAgentUno ownPort=9091'--版本2.0.1-beta-05

请注意,如果您的代理计算机没有必要的资源,那么这样做没有什么好处。例如,一个单核心VM在包含三个代理的生成队列中的运行速度不会比一个代理快得多。如果您在不了解上述内容的情况下安装了代理(如我所做的),请在/bin目录中的已安装生成代理上运行“service.uninstall.bat”,然后对每个代理执行上述回答。之后,对每个代理运行“service.start.bat”。太棒了。但奇怪的是,安装向导不支持安装多个代理。建议您在安装新代理后可能会遇到问题,如“Teamcity代理处于断开连接状态(代理已注销(将升级))”之类的错误。这可以通过停止First代理(或安装的其他代理)并从服务(在Windows/Windows服务器上)重新启动新代理来解决。这会将新代理从“断开连接”设置为“已连接”。注意:“如果使用Windows installer安装其他代理并希望将代理作为服务运行,则需要执行手动步骤,因为安装程序不支持在同一台计算机上安装第二个代理作为服务:现有服务被覆盖”。看\我很高兴这篇博文帮助了一些人。然而,遵循其中的指示破坏了我现有的服务。即使完全卸载了这两个服务,删除了这两个目录,只重新安装了原始服务,它仍然无法运行一些在我开始所有这些之前工作正常的作业。我强烈推荐投票数最高的答案中的解决方案。