Team City: Flexible, Distributed, Customizable build systems
Rating: 9 out of 10
May 16, 2018
LR
Vetted Review
Verified User
5 years of experience
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.
Cons
- 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.