Extension in TeamCity is a point where standard TeamCity behavior can be changed. There are three marker interfaces for TeamCity extensions:
Extension interface implements one of these marker interfaces. ServerExtension and AgentExtension are used to mark server and agent side extensions correspondingly. TeamCityExtension is the base interface for ServerExtension and AgentExtension. Thus you can take a list of all available extensions in TeamCity by taking a look at interfaces which extend these marker interfaces.
Registering custom extension
There are two ways to register custom extension:
define a bean in the Spring context which implements extension interface, in this case your extension will be loaded automatically
register your extension at runtime in the
jetbrains.buildServer.ExtensionHolderservice (can be obtained by Spring autowiring feature)
Allows customizing text status line of the build, i.e. the build description which usually contains text like "Tests passed: 234, failed: 4 (2 new)".
Similar to TextStatusBuilder but affects "Triggered by" value shown in the UI.
This extension allows applying custom formatting to test stacktrace to be shown in the UI.
Allows defining preconditions for starting a build on an agent, that is, you can instruct TeamCity to delay a build till some condition is met.
This extension is called or each build which is to be cleaned up.
Allows modifying build parameters right before they are sent to an agent.
Allows adding additional parameters available for a build. It differs from ParametersPreprocessor in the way that the parameters added by BuildParametersProvider will be available in a popup showing available parameters, and will be considered when requirements are calculated.
Provides a human-readable description for a parameter, see also BuildParametersProvider.
Translator for specific type of service messages.
Provides a custom usage statistics.