Team City: Flexible, Distributed, Customizable build systems
May 16, 2018

Team City: Flexible, Distributed, Customizable build systems

Larry Reed | TrustRadius Reviewer
Score 9 out of 10
Vetted Review
Verified User

Overall Satisfaction with TeamCity

TC is used across our organization to do builds for all our apps and services. We started using it to replace our custom build and deploy system because we needed something more flexible and customizable, and something that did not need a fully dedicated support team.
  • Fully customizable build process. Each step of the build process can be parameterized and customized to address specific needs of particular applications. This allowed us to easily convert from a custom VM-based environment to our current Docker-based environment.
  • Manages large numbers of build agents seamlessly. This allows us to run multiple builds on many different applications in a most efficient manner.
  • Build steps can be managed in an arbitrary manner, allowing some parts of the process to proceed in parallel while restricting others to depend on completion of all relevant steps.
  • The customization is still fairly complex and is best managed by a dev support team. There is great flexibility, but with flexibility comes responsibility. It isn't always obvious to a developer how to make simple customizations.
  • Sometimes the process for dealing with errors in the process isn't obvious. Some paths to rerunning steps redo dependencies unnecessarily while other paths that don't are less obvious.
  • When we initially started using it, there was a big impact because it made our build/deploy more reliable and flexible, as well as quicker.
  • Over time, we found that it was relatively easy to change our build and deployment system to our current Docker-based system. This has not only allowed us to continue improving our time to deploy but also to distribute the build process to engineers rather than have everything controlled by a dev infrastructure team.
  • Our most recent change has been to diversify our data centers to support international data centers. TC has made this process more or less seamless, although we no longer use it specifically for the deployment stage for various reasons.
TC is great when you have a relatively straightforward sequence of build steps. It allows you to vary the set of build steps by application, and control the dependencies within the build steps.

For our needs, I haven't found any scenarios where TC doesn't provide what we need.