Overview

TeamCity is a continuous integration and continuous delivery (CI/CD) server developed by JetBrains, designed to automate the software development lifecycle. Launched in 2006, it provides tools for building, testing, and deploying software projects across various platforms and languages. TeamCity is available in two primary forms: TeamCity On-Premises, which allows organizations to host the server within their own infrastructure, and TeamCity Cloud, a managed service offering. The platform focuses on providing detailed insights into build processes, robust version control system (VCS) integrations, and flexible pipeline configurations.

TeamCity is frequently adopted by development teams working with Java and .NET ecosystems, largely due to its deep integration with other JetBrains IDEs, such as IntelliJ IDEA and ReSharper. Its capabilities extend to supporting a broad spectrum of build tools and frameworks, including Maven, Gradle, MSBuild, and Docker. The server enables users to define build configurations through a web-based user interface or by using Kotlin DSL (Domain-Specific Language) for version-controlled pipeline definitions, supporting infrastructure-as-code practices.

The platform is particularly suited for organizations that require fine-grained control over their CI/CD environments, often involving complex build dependencies, custom artifact management, and specific security or compliance requirements that on-premises hosting can address. Its extensibility through plugins further enhances its adaptability to diverse development workflows and technology stacks. For teams managing large codebases or intricate release processes, TeamCity offers features like parallel test execution, build chains, and artifact dependencies to optimize build times and ensure consistent deployments.

While TeamCity offers strong capabilities for various development environments, its adoption is notable within professional and enterprise settings where comprehensive reporting, detailed historical data, and integration with a broad range of development tools are critical. The platform’s ability to scale build agents and manage concurrent builds makes it suitable for growing teams and projects with increasing CI/CD demands. Competitors like GitLab CI/CD also offer robust integrated CI/CD, often as part of a broader DevOps platform, while GitHub Actions focuses on event-driven workflows within the GitHub ecosystem GitLab CI/CD documentation.

Key features

  • Continuous Integration/Continuous Delivery: Automates the entire CI/CD pipeline from code commit to deployment, supporting various build triggers and deployment targets.
  • Build Chains and Dependencies: Enables the creation of complex build pipelines by linking multiple build configurations, allowing artifacts from one build to be used as inputs for another.
  • Extensive VCS Support: Integrates with major version control systems including Git, Subversion, Perforce, and Mercurial, allowing for automatic build triggering on code changes TeamCity VCS roots configuration.
  • Kotlin DSL for Configuration: Allows build configurations to be defined using Kotlin DSL, enabling version control of CI/CD pipeline definitions as code.
  • Reporting and Metrics: Provides detailed build history, test results, code coverage, and other build metrics through a web interface, aiding in quality assurance and performance analysis.
  • Plugin Ecosystem: Supports a wide range of plugins for extending functionality, integrating with external tools, and customizing the CI/CD process.
  • On-Premises and Cloud Options: Offers deployment flexibility with both self-hosted TeamCity On-Premises and a managed TeamCity Cloud service.
  • Parallel Test Execution: Distributes tests across multiple build agents to reduce overall build and test times.

Pricing

TeamCity offers different pricing structures for its On-Premises and Cloud versions, each with a free tier.

Product Free Tier Details Starting Paid Tier Additional Details
TeamCity On-Premises Up to 3 build agents and 100 build configurations. $299 (for 1 additional build agent) Paid licenses are based on the number of additional build agents. Perpetual license includes 1 year of updates.
TeamCity Cloud 3 build agents and 30 hours of build time per month. Starts at $40/month (for 1 additional build agent and 100 hours of build time) Usage-based pricing for build agents and build time. Various plans available for scaling resources.

For the most current pricing details and enterprise-level options, refer to the official TeamCity pricing page.

Common integrations

  • JetBrains IDEs: Deep integration with IntelliJ IDEA, ReSharper, and other JetBrains development environments for direct interaction with CI/CD processes TeamCity IDE integration guide.
  • Version Control Systems: Connects with Git, Subversion, Perforce, Mercurial, and TFS for source code management.
  • Build Tools: Supports Maven, Gradle, MSBuild, Ant, npm, and other common build automation tools.
  • Cloud Platforms: Integrates with AWS, Google Cloud, and Microsoft Azure for cloud-based deployments and infrastructure provisioning.
  • Containerization: Built-in support for Docker and Kubernetes for containerized builds and deployments.
  • Testing Frameworks: Compatible with JUnit, NUnit, TestNG, and other testing frameworks for reporting test results.
  • Issue Trackers: Integrates with Jira, YouTrack, and other issue tracking systems for linking builds to tasks.
  • Notification Tools: Sends notifications to Slack, email, and other communication platforms on build status changes.

Alternatives

  • GitHub Actions: An event-driven automation platform integrated directly into GitHub repositories, offering CI/CD capabilities.
  • GitLab CI/CD: A built-in part of GitLab, providing comprehensive CI/CD functionality from a single application.
  • Jenkins: An open-source automation server that provides a vast ecosystem of plugins for building, deploying, and automating any project.
  • Azure DevOps Pipelines: A feature of Azure DevOps that provides CI/CD to build, test, and deploy code to any target.
  • CircleCI: A cloud-native CI/CD platform known for its speed, scalability, and ease of use, particularly with containerized applications.

Getting started

To get started with TeamCity, you typically define a build configuration. This example demonstrates a basic Maven build using a pom.xml file. First, ensure TeamCity is installed and running, either on-premises or via TeamCity Cloud. Then, create a new project and build configuration in the TeamCity web UI, linking it to your version control repository.

Assuming you have a Maven project with a pom.xml, a common build step involves executing Maven goals like clean install. TeamCity will automatically detect your Maven project and suggest build steps. The following is a simplified representation of what TeamCity might execute or a custom script you could define:

<!-- pom.xml example -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.example</groupId>
  <artifactId>my-app</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>my-app</name>
  <url>http://maven.apache.org</url>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.13.2</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>3.3.0</version>
        <configuration>
          <archive>
            <manifest>
              <addClasspath>true</addClasspath>
              <mainClass>com.example.App</mainClass>
            </manifest>
          </archive>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

In TeamCity, you would configure a build step of type "Maven" and specify the goals clean install. TeamCity agents will then pull the code, execute the Maven command, and report the build status and test results back to the server. For more advanced configurations, including using Kotlin DSL for build scripts, refer to the TeamCity documentation.