TeamCity is a continuous integration solution written in Java from JetBrains.
Ranked in these QuestionsQuestion Ranking
Pro Easy installation
TeamCity has different installation packages for different operating systems. All the user needs to do is download the correct one and run it.
Pro Cross-platform build support
The fact that it is based on Java does not hinder TeamCity's ability to support different build environments. TeamCity in fact supports a large number of languages and tools for each of those languages (build runners and test frameworks).
Some of the languages/platforms that are supported include: Ruby, .NET, Java.
Pro Supports build chains
The user can easily compose dependencies between builds by adding snapshot and artifact dependencies, all on the one screen. All output of upstream builds is available to downstream builds. Triggering sets off the entire build chain and supports re-running of the portions of the chain that failed.
Pro Brilliant interface
The user interface of TeamCity is clear, well thought out and the dashboard is highly customizable.
Pro Best choice for .NET
Seems to be the best choice for .NET applications, but to be honest: if you stray from the default settings you will be in a lot of pain most of the time.
Pro Well documented
TeamCity offers well defined APIs for extending, as well as a REST interface.
Pro Testing support
TeamCity supports both MSTest and NUnit (which is open source) to run tests.
TeamCity has a free tier which includes a maximum of 20 build configurations and up to 3 build agents. If you want to add 10 more configurations and 1 more agent, it will cost $299; unless you choose to buy an enterprise license which starts at $1999.
Con Poor quality plugins
At least some of them do not work, probably because they're not updated to more recent TeamCity versions.
Con Inter-branch merges trigger emails to unrelated committers
Whenever an inter-branch merge occurs, TeamCity pulls up the first parent of the merge commit and sends them an e-mail. However, this sort of information would be more useful to the merge author.