Setting up and Running Additional Build Agents
Before you can start customizing projects and creating build configurations, you need to add and configure build agents. Review the agent-server communication and Prerequisites sections before proceeding with agent installation. Make sure to also read our security notes on maintaining build agents and licensing policy on adding new agents.
Necessary OS and environment permissions
Before the installation, review the Conflicting Software section. In case of any issues, make sure no conflicting software is used.
Note that to run a TeamCity build agent, the environment and user account used to run the Agent need to comply with the following requirements:
The agent process (Java) must:
be able to open outbound HTTP connections to the server URL configured via the
serverUrlproperty in the
buildAgent.propertiesfile (typically the same address you use in the browser to view the TeamCity UI). Sending requests to the paths under the configured URL should not be limited. Ensure that any firewalls installed on the agent, network configuration, and proxies (if any) comply with these requirements.
have full permissions (read/write/delete) to the following directories recursively:
<agent home>(necessary for automatic agent upgrade and agent tools support),
<agent temp>, and agent system directory (set by
systemDirparameters in the
be able to launch processes (to run builds).
be able to launch nested processes with the following parent process exit (this is used during agent upgrade).
Log on as a service (to run as Windows service).
Start/Stop service (to run as Windows service, necessary for the agent upgrade to work, see also Microsoft KB article).
Debug programs (required for take process dump functionality).
Reboot the machine (required for agent reboot functionality) .
The user must be able to run the
shutdowncommand (for the agent machine reboot functionality and the machine shutdown functionality when running in a cloud environment).
The build process is launched by a TeamCity agent and thus shares the environment and is executed under the OS user used by the TeamCity agent. Ensure that the TeamCity agent is configured accordingly. See Known Issues for related Windows Service Limitations.
Agent-Server Data Transfers
A TeamCity agent connects to the TeamCity server via the URL configured as the
serverUrl agent property. This is called unidirectional agent-to-server connection.
Agents use unidirectional agent-to-server connection via the polling protocol: the agent establishes an HTTP(S) connection to the TeamCity Server, and polls the server periodically for server commands.
Generating Authentication Token
The recommended approach to connecting a self-hosted agent to a TeamCity Cloud instance is to generate a unique authentication token for this agent. To do this, go to Agents, open the Install Build Agents menu in the upper right corner of the screen, and click Use authentication token. There are two options:
Generate plain-text token: you need to copy the generated token and enter it in the build agent configuration file. On Windows, you will be prompted to enter it right in the Configure Build Agent Properties installation dialog.
Download config: enter an agent name (
nameattribute in the build agent config) and download the entire config file. Place it as the
buildAgent.propertiesfile in the build agent directory.
Please generate own token or configuration file per each self-hosted agent.
Installing Additional Build Agents
Install a build agent using any of the following options:
using Windows installer (Windows only)
by downloading a ZIP file and installing manually (any platform): minimal and full-packed ZIP archives ara available
Installing via Windows installer
In the TeamCity web UI, navigate to the Agents tab.
Click the Install Build Agents link and select Windows Installer to download the installer.
On the agent, run the
agentInstaller.exeWindows Installer and follow the installation instructions.
Installing via Docker Agent Image
In the TeamCity UI, navigate to the Agents tab.
Click the Install Build Agents link and select Docker Agent Image.
Follow the instructions on the opened page.
Installing via ZIP File
Make sure a JDK (JRE) 1.8.0_161 or later (Java 8-11 are supported, but 1.8.0_161+ is recommended) is properly installed on the agent computer.
On the agent computer, make sure the
JAVA_HOMEenvironment variables are set (pointing to the installed JRE or JDK directory respectively).
In the TeamCity web UI, navigate to the Agents tab.
- Click the Install Build Agents link and select one of the two options to download the archive:
Minimal ZIP file distribution: a regular build agent with no plugins
(since TeamCity 2020.1) Full ZIP file distribution*: a full build agent prepacked with all plugins currently enabled on the server
Extract the downloaded file into the desired directory.
Navigate to the
<installation path>\confdirectory, locate the file called
buildAgent.dist.propertiesand rename it to
buildAgent.propertiesfile to specify the TeamCity server URL (HTTPS is recommended, see the notes), the name of the agent, and the authentication token. Refer to the Build Agent Configuration page for details on agent configuration.
Under Linux, you may need to give execution permissions to the
On Windows, you may also want to install the build agent Windows service instead of using the manual agent startup.
Installing via Agent Push
TeamCity provides the Agent Push functionality that allows installing a build agent to a remote host.
Currently, supported combinations of the server host platform and targets for build agents are:
from the Unix-based TeamCity server, build agents can be installed to Unix hosts only (via SSH)
Remote Host Requirements
There are several requirements for the remote host:
You can test the connection with the following commands:
net use \\target\Admin$ /user:Administrator dir \\target\Admin$
In the TeamCity Server web UI navigate to the Agents | Agent Push tab, and click Install Agent.
If you are going to use same settings for several target hosts, you can create a preset with these settings and use it each time when installing an agent to another remote host.
In the Install agent dialog, either select a saved preset or choose "Use custom settings", specify the target host platform, and configure corresponding settings. Agent Push to a Linux system via SSH supports custom ports (the default is 22) specified as the SSH port parameter. The port specified in a preset can be overridden in the host name (for example,
hostname.domain:2222), during the actual agent installation.
You may need to download
Sysinternals psexec.exe, in which case you will see the corresponding warning and a link to the Administration | Tools page where you can download it.
Starting the Build Agent
TeamCity build agents can be started manually or configured to start automatically.
To start the agent manually, run the following script:
<installation path>\bin\agent.bat start
for Linux and macOS:
<installation path>\bin\agent.sh start
To configure the agent to be started automatically, see the corresponding sections:
Linux: configure a daemon process with the
agent.sh startcommand to start it and the
agent.sh stopcommand to stop it.
Automatic Agent Start under Windows
To run an agent automatically on the machine boot under Windows, you can either set up the agent to be run as a Windows service or use another way of the automatic process start.
Using the Windows service approach is the easiest way, but Windows applies some constraints to the processes run this way.
A TeamCity agent works reliably under Windows service provided all the requirements are met, but is often not the case for the build processes configured to be run on the agent.
That is why it is recommended to run a TeamCity agent as a Windows service only if all the build scripts support this. Otherwise, it is advised to use alternative OS-specific ways to start a TeamCity agent automatically.
One of the ways is to configure an automatic user logon on Windows start and then configure the TeamCity agent start (via
agent.bat start) on the user logon (for example, via Windows Task Scheduler).
Build Agent as a Windows Service
In Windows, you may want to run TeamCity agent as a Windows service to allow it running without any user logged on. If you use the Windows agent installer, you have an option to install the service in the installation wizard.
The following instructions can be used to install the Windows service manually (for example, after
.zip agent installation). This procedure should also be performed to create Windows services for the second and following agents on the same machine.
To install the service:
Check if the service with the required name and id (see #4 below, service name is
TeamCity Build Agentby default) is not present; if installed, remove it.
Check that the
wrapper.java.commandproperty in the
<agent home>\launcher\conf\wrapper.conffile contains a valid path to the Java executable in the JDK installation directory. You can use
wrapper.java.command=../jre/bin/javafor the agent installed with the Windows distribution. Make sure to specify the path of the java.exe file without any quotes.
If you want to run the agent under user account (recommended) and not "System", add the
wrapper.ntservice.passwordproperties to the
<agent home>\launcher\conf\wrapper.conffile with appropriate credentials
(for second and following installations) Modify the
<agent>\launcher\conf\wrapper.conffile so that the
wrapper.ntservice.descriptionproperties have unique values within the computer.
<agent home>\bin\service.install.batscript under a user with sufficient privileges to register the new agent service. Make sure to start the agent for the first time only after it is configured as described.
To start the service:
<agent home>/bin/service.start.bat(or use standard Windows Services applet)
To stop the service:
<agent home>/bin/service.stop.bat(or use standard Windows Services applet)
You can also use the standard Windows
net.exe utility to manage the service once it is installed.
For example (assuming the default service name):
<agent home>\launcher\conf\wrapper.conf file can also be used to alter the agent JVM parameters.
The user account used to run the build agent service must have enough rights to start/stop the agent service, as described above.
Automatic Agent Start under Linux
To run an agent automatically on the machine boot under Linux, configure a daemon process with the
agent.sh start command to start it and the
agent.sh stop command to stop it.
For systemd, see the example
teamcityagent.service configuration file:
init.d, refer to an example procedure:
1. Navigate to the services start/stop services scripts directory:
2. Open the build agent service script:
3. Paste the following into the file :
4. Set the permissions to execute the file:
5. Make links to start the agent service on the machine boot and on restarts using the appropriate tool:
For Red Hat/CentOS:
Automatic Agent Start under macOS
For macOS, TeamCity provides the ability to load a build agent automatically when a build user logs in.
The recommended approach is to use
To configure an automatic build agent startup via
launchd, follow these steps:
1. Install a build agent on a Mac via
2. Prepare the
conf/buildAgent.properties file (set agent name there, at least).
3. Make sure that all files under the
buildAgent directory are owned by
your_build_user to ensure a proper agent upgrade process.
4. Load the build agent via the command:
Run these commands under the
Wait for some time for the build agent to auto-upgrade from the TeamCity server. This can take up to several minutes. You can watch the process in the logs:
5. When the build agent upgrades and successfully connects to TeamCity server, stop the agent:
6. After the build agent upgrades from the TeamCity server, copy the
buildAgent/bin/jetbrains.teamcity.BuildAgent.plist file to the
$HOME/Library/LaunchAgents/ directory (you might have to create it). If you don't want TeamCity to start under the root permissions, specify the UserName key in the
.plist file, for example:
7. Configure your Mac system to automatically login as
your_build_user, as described here.
On the system startup, the build user should automatically log in, and the build agent should start.
To quickly check that the build agent is running, use the following command:
Stopping the Build Agent
To stop the agent manually, run the
<Agent home>\agent script with a
stop to request stopping after the current build finished.
stop force to request an immediate stop (if a build is running on the agent, it will be stopped abruptly (canceled)).
Under Linux, you have one more option top use
stop kill to kill the agent process.
If the agent runs with a console attached, you may also press Ctrl+C in the console to stop the agent (if a build is running, it will be canceled).
Stopping the Agent Service on macOS
If a build agent has been started as a
LaunchAgent service, it can be stopped using the
A TeamCity build agent is a Java application (supported Java versions).
A build agent contains two processes:
Agent Launcher — a Java process that launches the agent process
Agent — the main process for a Build Agent; runs as a child process for the agent launcher
.exe TeamCity distribution comes bundled with 64-bit Amazon Corretto 8.
If you run a previous version of the TeamCity agent, you will need to repeat the agent installation to update the JVM.
Using 64-bit JDK (not JRE) is recommended. JDK is required for some build runners like IntelliJ IDEA Project, Java Inspections, and Duplicates. If you do not have Java builds, you can install JRE instead of JDK.
On switching from 32- to 64-bit, you might need to double the
-Xmx memory value for the main agent process (see related notes).
.zip agent installation you need to install the appropriate Java version. Make it available via
PATH or available in one of the following places:
in the directory pointed to by the
JRE_HOMEenvironment variables (check that you only have one of the variables defined).
if you plan to run the agent via Windows service, make sure to set the
wrapper.java.commandproperty in the
<agent home>\launcher\conf\wrapper.conffile to a valid path to the Java executable
Upgrading Java on Agents
If you are trying to launch an agent, and it is not able to find the required Java version (currently Java 8) in any of the default locations, the agent will report an error on starting, the process will not launch, and the agent will be shown as disconnected in the TeamCity UI.
If a build agent uses a Java version older than Java 8, you will see the corresponding warning on the agent's page and a health item in the web UI.
To update Java on agents, do one of the following:
If the agent details page in the TeamCity UI displays a Java version note with the corresponding action, you can switch to using newer Java: if the appropriate Java version of the same bitness as the current one is detected on the agent, the agent page provides an action to switch to using that Java automatically. Upon the action invocation, the agent process is restarted (once the agent becomes idle, i.e. finishes the current build if there is one) using the new Java.
(Windows) Since the build agent Windows installer comes bundled with the required Java, you can just manually reinstall the agent using the Windows installer (
.exe) obtained from the TeamCity server Agents page. See installation instructions. It is important to uninstall the previous version of the agent before installing the updated agent: invoke
Uninstall.exein the agent home directory, clear all the "Remove" checkboxes, and click Uninstall.
Install a required Java on the agent into one of the standard locations, and restart the agent — the agent should then detect it and provide an action to use a newer Java in the web UI (see above).
Install a required Java on the agent and configure the agent to use it.
Installing Several Build Agents on the Same Machine
You can install several TeamCity agents on the same machine if the machine is capable of running several builds at the same time. However, we recommend running a single agent per (virtual) machine to minimize builds cross-influence and making builds more predictable. When installing several agents, it is recommended to install them under different OS users so that user-level resources (like Maven/Gradle/NuGet local artifact caches) do not conflict.
TeamCity treats all agents equally regardless of whether they are installed on the same or on different machines.
When installing several TeamCity build agents on the same machine, consider the following:
The builds running on such agents should not conflict by any resource (common disk directories, OS processes, OS temp directories).
Depending on the hardware and the builds' specifics, you may experience degraded building performance. Ensure there are no disk, memory, or CPU bottlenecks when several builds are run at the same time.
Preferably, agents should run under different OS users.
After having one agent installed, you can install additional agents by following the regular installation procedure (see an exception for the Windows service below), but make sure that:
The agents are installed in separate directories.
The agents have the distinctive
tempDirdirectories in the
Values for the
Usually, for a new agent installation you can just copy the directory of the existing agent to a new place except its
system directories. Then, modify
conf/buildAgent.properties with the new
ownPort values. Clear (delete or remove the value) the
authorizationToken property and make sure the
tempDir are relative/do not clash with another agent.
Configuring second build agent on macOS
If you want to start several build agents on macOS, repeat the procedure of installing and starting build agent with the following changes:
Install the second build agent in a different directory.
conf/buildAgent.properties, specify a different agent name.
- Do not run
Create a copy of the
- Edit the
$HOME/Library/LaunchAgents/jetbrains.teamcity.BuildAgent2.plistfile and set the following parameters:
WorkingDirectoryparameter to the correct path to the second build agent home
Start the second agent with the command
launchctl load $HOME/Library/LaunchAgents/jetbrains.teamcity.BuildAgent2.plist.
To check that both build agents are running, use the following command:
Configuring second build agent on Windows
If you use Windows installer to install additional agents and want to run the agent as a service, you will need to perform manual steps as installing second agent as a service on the same machine is not supported by the installer: the existing service is overwritten (see also a feature request).
In order to install the second agent, it is recommended to install the second agent manually (using the
.zip agent distribution). You can use the Windows agent installer and do not opt for service installation, but you will lose uninstall option for the initially installed agent this way.
After the second agent is installed, register a new service for it as mentioned in the section above.