Vous exécutez plusieurs agents TeamCity sur le même ordinateur?

86

Nous avons plusieurs machines de build, chacune exécutant un seul agent de build TeamCity. Chaque machine est très puissante et nous aimerions exécuter plusieurs agents de build sur la même machine.

Est-ce possible sans utiliser la virtualisation ? Existe-t-il des alternatives de qualité à TeamCity qui soutiennent cela?

ripper234
la source

Réponses:

133

Oui, c'est possible :

Plusieurs agents peuvent être installés sur une même machine. Ils fonctionnent comme des agents distincts et TeamCity travaille avec eux en tant qu'agents différents, sans utiliser le fait qu'ils partagent la même machine. Après avoir installé un agent, vous pouvez en installer un supplémentaire, à condition que les conditions suivantes soient remplies:

  • les agents sont installés dans les répertoires séparés
  • ils ont des répertoires de travail et temporaires distincts
  • buildAgent.properties est configuré pour avoir des valeurs différentes pour les propriétés name et ownPort

Assurez-vous qu'il n'y a pas de configurations de construction qui ont un répertoire de retrait absolu spécifié (sinon, assurez-vous que ces configurations de construction ont l'option «retrait propre» activée et qu'elles ne peuvent pas être exécutées en parallèle).

Sous Windows, pour installer des agents supplémentaires en tant que services, modifiez [rép agent] \ launcher \ conf \ wrapper.conf pour changer les propriétés afin qu'elles aient un nom distinct dans l'ordinateur:

  • wrapper.console.title
  • wrapper.ntservice.name
  • wrapper.ntservice.displayname
  • wrapper.ntservice.description
CrazyCoder
la source
Juste une remarque, mais gardez à l'esprit qu'il y a peu d'avantages à faire cela si votre machine d'agent ne dispose pas des ressources nécessaires. Par exemple, une machine virtuelle monocœur ne fonctionnera pas dans une file d'attente de compilation avec trois agents beaucoup plus rapidement qu'avec un seul.
bopapa_1979
13
Si vous avez installé vos agents sans connaître ce qui précède (comme je l'ai fait), exécutez "service.uninstall.bat" sur le Build Agent installé dans le répertoire / bin, puis faites ce que la réponse ci-dessus indique pour chaque agent. Après cela, exécutez "service.start.bat" sur chaque agent.
Brandon
2
Brillant. Mais étrange que l'installation de plusieurs agents ne soit pas prise en charge par l'assistant d'installation.
Jesper Mygind
Il est bon de savoir que vous pouvez avoir un problème avec le nouvel agent après son installation, une erreur du type "Agent Teamcity en état déconnecté (l'agent s'est désinscrit (va mettre à niveau))". Cela peut être résolu en arrêtant le premier agent (ou les autres agents installés) et en redémarrant le nouveau à partir des services (sur Windows / Windows Server). Cela définira votre nouvel agent de Déconnecté à Connecté.
Santiago Rebella
Attention: « Si vous utilisez le programme d'installation de Windows pour installer des agents supplémentaires et que vous souhaitez exécuter l'agent en tant que service, vous devrez effectuer des étapes manuelles car l'installation du deuxième agent en tant que service sur la même machine n'est pas prise en charge par le programme d'installation: le service existant est écrasé ". Voir confluence.jetbrains.com/display/TCD10//… \
rsenna
30

Vous pouvez également consulter ce billet de blog pour un guide étape par étape

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

kay.one
la source
1
Je suis heureux que cet article de blog ait aidé certaines personnes. Cependant, suivre les instructions a ruiné mon service existant. Même après une désinstallation complète des deux services, la suppression des deux répertoires et la réinstallation uniquement du service d'origine, il ne lancera toujours pas certaines tâches qui fonctionnaient bien avant que je ne commence tout cela. Je recommande vivement la solution de la réponse la plus votée.
sirdank
3

La meilleure réponse est la bonne méthode, mais si vous voulez compléter cela plus facilement, vous pouvez utiliser le package TeamCityAgent Chocolatey et fournir le nom de l'agent, le dossier de l'agent et le port comme --paramset il gérera la configuration des fichiers de configuration ainsi que l'extraction dans la version requise de Java via le server-jrepackage.

La seule mise en garde à cela est que vous devez utiliser --forcesur toutes les installations après le premier agent car Chocolatey ne comprend pas actuellement l'installation de la même application avec une configuration différente comme une "nouvelle" installation.

Vous devrez également l'utiliser --version 2.0.1-beta-05car il est encore en phase de test, mais devrait bientôt sortir de la version bêta.

Exemple d'installation complète pour un deuxième agent: 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
la source