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

Posted

技术标签:

【中文标题】在同一台计算机上运行多个 TeamCity 代理?【英文标题】:Running multiple TeamCity Agents on the same computer? 【发布时间】:2010-12-19 20:09:49 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

是的,it's possible:

可以在一台机器上安装多个代理。它们作为单独的代理运行,TeamCity 作为不同的代理与它们一起工作,而不是利用它们共享同一台机器的事实。 安装一个代理后,您可以再安装一个,前提是满足以下条件:

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

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

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

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

【讨论】:

只是一个评论,但请记住,如果您的代理机器没有必要的资源,这样做几乎没有什么好处。例如,单核 VM 在构建队列中使用三个代理的速度不会比使用一个代理快得多。 如果您在不知道上述情况的情况下安装了代理(就像我一样),请在 /bin 目录中已安装的构建代理上运行“service.uninstall.bat”,然后执行以下操作上面的答案是针对每个代理的。之后,在每个代理上运行“service.start.bat”。 太棒了。但奇怪的是安装向导不支​​持安装多个代理。 建议您安装新代理后可能会遇到问题,例如“Teamcity 代理处于断开连接状态(代理已取消注册(将升级))”之类的错误。这可以通过停止第一个代理(或安装的其他代理)并从服务重新启动新代理(在 Windows/Windows Server 上)来解决。这会将您的新代理从断开连接设置为连接。 注意:“如果您使用 Windows 安装程序安装其他代理,并且想要将代理作为服务运行,您将需要执行手动步骤,因为将第二个代理安装为安装程序不支持同一台机器上的服务:现有服务被覆盖”。见confluence.jetbrains.com/display/TCD10//…\【参考方案2】:

您还可以查看此博客文章以获取分步指南

http://handcraftsman.wordpress.com/2010/07/20/multiple-teamcity-build-agents-on-one-server/

【讨论】:

我很高兴这篇博文帮助了一些人。但是,按照其中的指示破坏了我现有的服务。即使在完全卸载这两个服务、删除两个目录并仅重新安装原始服务之后,它仍然无法运行在我开始这一切之前运行良好的一些作业。我强烈推荐票数最高的答案中的解决方案。【参考方案3】:

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

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

您还需要使用--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

【讨论】:

以上是关于在同一台计算机上运行多个 TeamCity 代理?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在单台计算机上为 Atlassian Bamboo 安装多个远程代理?

Qt UDpsocket 在同一台计算机上工作,但不在同一网络上的两台计算机上工作

我可以在同一台计算机上运行两个 Web 服务器吗?

在同一台计算机上运行 Internet Explorer 6、Internet Explorer 7 和 Internet Explorer 8

可以在同一台计算机上运行具有不同配置文件的同一应用的两个实例吗?

我可以在同一台机器上运行多个elasticsearch实例进行日志聚合吗?