Mehrere TeamCity-Agenten auf demselben Computer ausführen?

86

Wir haben mehrere Build-Maschinen, auf denen jeweils ein einzelner TeamCity-Build-Agent ausgeführt wird. Jede Maschine ist sehr stark und wir möchten mehrere Build-Agenten auf derselben Maschine ausführen.

Ist dies ohne Virtualisierung möglich ? Gibt es hochwertige Alternativen zu TeamCity, die dies unterstützen?

ripper234
quelle

Antworten:

133

Ja, es ist möglich :

Auf einem Computer können mehrere Agenten installiert werden. Sie fungieren als separate Agenten, und TeamCity arbeitet mit ihnen als unterschiedliche Agenten, ohne die Tatsache zu nutzen, dass sie denselben Computer gemeinsam nutzen. Nach der Installation eines Agenten können Sie einen weiteren installieren, sofern die folgenden Bedingungen erfüllt sind:

  • Die Agenten werden in den separaten Verzeichnissen installiert
  • Sie haben unterschiedliche Arbeits- und Zeitverzeichnisse
  • buildAgent.properties ist so konfiguriert, dass es unterschiedliche Werte für name- und ownPort-Eigenschaften gibt

Stellen Sie sicher, dass keine Build-Konfigurationen vorhanden sind, für die ein absolutes Checkout-Verzeichnis angegeben ist (stellen Sie alternativ sicher, dass für solche Build-Konfigurationen die Option "Clean Checkout" aktiviert ist und sie nicht parallel ausgeführt werden können).

Um unter Windows zusätzliche Agenten als Dienste zu installieren, ändern Sie [Agentenverzeichnis] ​​\ launcher \ conf \ wrapper.conf , um die Eigenschaften so zu ändern, dass sie auf dem Computer einen eindeutigen Namen haben:

  • wrapper.console.title
  • wrapper.ntservice.name
  • wrapper.ntservice.displayname
  • wrapper.ntservice.description
CrazyCoder
quelle
Nur eine Bemerkung, aber denken Sie daran, dass dies wenig vorteilhaft ist, wenn Ihr Agentencomputer nicht über die erforderlichen Ressourcen verfügt. Beispielsweise arbeitet eine Single-Core-VM mit drei Agenten nicht viel schneller durch eine Build-Warteschlange als mit einem.
bopapa_1979
13
Wenn Sie Ihre Agenten installiert haben, ohne das oben Gesagte zu wissen (wie ich), führen Sie "service.uninstall.bat" auf dem installierten Build Agent im Verzeichnis / bin aus und führen Sie dann die obigen Antworten für jeden Agenten aus. Führen Sie danach auf jedem Agenten "service.start.bat" aus.
Brandon
2
Brillant. Es ist jedoch seltsam, dass die Installation mehrerer Agenten vom Installationsassistenten nicht unterstützt wird.
Jesper Mygind
Es ist gut zu wissen, dass nach der Installation möglicherweise ein Problem mit dem neuen Agenten auftritt, ein Fehler wie "Teamcity-Agent im Status" Nicht verbunden "(Agent ist nicht registriert (wird aktualisiert))". Dies kann behoben werden, indem der fisrt-Agent (oder die anderen installierten Agenten) gestoppt und der neue über die Dienste (unter Windows / Windows Server) neu gestartet wird. Dadurch wird Ihr neuer Agent von "Verbunden" auf "Verbunden" gesetzt.
Santiago Rebella
Achtung: " Wenn Sie das Windows-Installationsprogramm zum Installieren zusätzlicher Agenten verwenden und den Agenten als Dienst ausführen möchten, müssen Sie manuelle Schritte ausführen, da die Installation des zweiten Agenten als Dienst auf demselben Computer vom Installationsprogramm nicht unterstützt wird: Der vorhandene Dienst wird überschrieben ". Siehe Confluence.jetbrains.com/display/TCD10//… \
rsenna
30

Sie können sich auch diesen Blog-Beitrag ansehen, um eine Schritt-für-Schritt-Anleitung zu erhalten

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

Kay One
quelle
1
Ich bin froh, dass dieser Blog-Beitrag einigen Menschen geholfen hat. Das Befolgen der Anweisungen ruinierte jedoch meinen bestehenden Dienst. Selbst nach einer vollständigen Deinstallation beider Dienste, dem Löschen der beiden Verzeichnisse und der Neuinstallation nur des ursprünglichen Dienstes werden einige Jobs, die ordnungsgemäß funktionierten, nicht ausgeführt, bevor ich mit all dem begonnen habe. Ich kann die Lösung aus der am besten bewerteten Antwort nur empfehlen.
Sirdank
3

Die Top-Antwort ist die richtige Methode, aber wenn Sie dies ausführen möchten einfach können Sie das verwenden TeamCityAgent Chocolatey Paket und den Agenten Namen angeben, den Agenten - Ordner und den Port als --paramsund es wird übernehmen die Konfigurationsdateien sowie ziehen Einrichtung in der erforderlichen Version von Java über das server-jrePaket.

Die einzige Einschränkung besteht darin, dass Sie sie --forcebei Installationen nach dem ersten Agenten verwenden müssen, da Chocolatey derzeit nicht versteht, dieselbe Anwendung mit einer anderen Konfiguration als "neue" Installation zu installieren.

Sie müssen es auch verwenden, --version 2.0.1-beta-05da sich dies noch in einer Testphase befindet, es aber bald aus der Beta herauskommen sollte.

Vollständiges Installationsbeispiel für einen zweiten Agenten: choco install teamcityagent --force -y --params 'serverUrl=http://teamcity.local:8111 agentName=AgentUno agentDir=C:\buildAgentUno ownPort=9091' --version 2.0.1-beta-05

dragon788
quelle