Agent Requirements
Agent requirements are used in TeamCity to specify whether a build configuration can run on a particular build agent besides Agent Pools and configured Build Configuration restrictions.
When a build agent registers on the TeamCity server, it provides information about its configuration, including its environment variables, system properties and additional settings specified in the buildAgent.properties
file.
The administrator can specify required environment variables and system properties for a build configuration on the Build Configuration Settings | Agent Requirements page. For instance, if a particular build configuration must run on a build agent running Windows, the administrator specifies this by adding a requirement that the teamcity.agent.jvm.os.name
system property on the build agent must contain the Windows
string.
If the properties and environment variables on the build agent do not fulfill the requirements specified by the build configuration, then the build agent is incompatible with this build configuration. The Agent Requirements page lists both compatible and incompatible agents. Multiple agent requirements for a single parameter can be added now. The conditions are treated as 'and' to determine compatible agents.
It is possible to disable a configured requirement using the corresponding option in the requirements list.
Sometimes the build configuration may become incompatible with a build agent if the build runner for this configuration cannot be initialized on the build agent. For instance, .NET build runners do not initialize on UNIX systems.
Implicit Requirements
Any reference (name in %-signs) to an unknown parameter is considered an "implicit requirement". That means that the build will only run on an agent which provides the parameters named. Otherwise, the parameter should be made available for the build configuration by defining it on the build configuration or project levels.
For instance, if you define a build runner parameter as a reference to another property: %\env.JDK_16%/lib/*.jar
, this will implicitly add an agent requirement for the referenced property: that is, env.JDK_16
should be defined. To define such properties on the agent, you can do one of the following:
specify them in the
buildAgent.properties
fileset the environment variable
JDK_16
on the build agentspecify the value on the Parameters page of a build configuration (in the latter case, the same value of the property for all build agents will be used).