2009-11-24 90 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

相關問題