TeamCity functionality can be significantly extended by custom plugins. TeamCity plugins are written in Java (any JVM language with Java invulnerability like Kotlin or Groovy can be used), run within the TeamCity application and have access to internal entities of the TeamCity server or agent.
Aside from this documentation, please refer to the following sources:
If you need more information or have a question regarding the API, please do not hesitate to post your question into TeamCity Plugins forum. Please use the search before posting to avoid possible duplication of discussions.
Consider making your plugin public and submit it to be listed on the plugins page.
Please refer to corresponding section for further details.
- Getting Started with Plugin Development
- Typical Plugins
- Build Runner Plugin
- Risk Tests Reordering in Custom Test Runner
- Custom Build Trigger
- Extending Notification Templates Model
- Issue Tracker Integration Plugin
- Version Control System Plugin
- Version Control System Plugin (old style - prior to 4.5)
- Custom Authentication Module
- Custom Notifier
- Custom Statistics
- Custom Server Health Report
- Extending Highlighting for Web diff view
- External Storage Implementation Guide
- Bundled Development Package
- Open API Changes
- Plugin Types in TeamCity
- Plugins Packaging
- Server-side Object Model
- Agent-side Object Model
- Web UI Extensions
- Plugin Settings
- Development Environment
- Developing Plugins Using Maven
- Plugin Development FAQ
Plugin Quick Start
There are also several approaches to create plugins provided by third parties or existing out of the main TeamCity development line.
- Developing Plugins Using Maven - Maven archetype supported by JetBrains
- Gradle TeamCity plugin - Git, Gradle build. Supports agent and server-side plugins, and helpers to download, install a TeamCity server, tasks to deploy, start and stop the server and agent.
- template plugin 1, see also a blog post - Git, IDEA project
- template plugin 2 - Subversion, IDEA project and Ant build, generates a plugin with custom name, see details in the readme.txt of the checkout
- Gradle TeamCity plugin - earlier, but a bit outdated version of Gradle build for TeamCity plugins
- (obsolete) Maven Archetype for TeamCity server plugin
See also a post on the very first steps for setting up the plugin development environment.