First of all in TeamCity team I play two roles: developer and manager. And as such my preferences are specific a bit. As manager I need to track the overall project health and minimize time while the builds are broken. This is especially important on the eve of the release. As a developer I need to see status of my changes.
So my five favorite features are:
1. Per-test responsibility
This feature significantly reduces time between test failure and responsible developer notification. Often when team uses CI server there is a person who tracks project status. This person has a context of latest changes committed to the project and can relatively easy find a developer responsible for a failure. I often use this feature because I am anxious about current project status and want tests to be fixed faster.
By the way, can you suggest a more neutral name for "responsibility"? It turns out that for some of developers being a "responsible" for a test failure is a bit offensive.
2. Build artifacts promotion
We have a special build configuration which upgrades our own TeamCity server. This build configuration (let's call it "Upgrade") depends by artifact dependencies on a configuration producing installation files ("Dist"). In this dependency we did not want to stick on a last finished build of "Dist" because sometimes it is broken. So we used "Run custom build" dialog to start "Upgrade" and typed a build number of "Dist" as a value of some parameter. Reference to this parameter was specified in the artifact dependency.
This configuration worked very well, although it was a bit complex and required some typing, so we decided to introduce a simpler way. With new artifacts promotion feature you still need an artifact dependency from "Upgrade" to "Dist" but now once the "Dist" finishes you can start "Upgrade" right from the "Dist" build. Usually when "Dist" finishes we need to check what changes it contains, are there any problems and so on. When build verification complete one can choose "Promote..." option from the build "Actions" menu and start "Upgrade". Artifacts of this build will be used in "Upgrade" without additional typing.
3. Change details / status page
As you probably know change detected by TeamCity now has its' own dedicated page. On this page you can see comment and files submitted in this change, as well as status of the started builds and failed tests.
Often I need to review changes submitted by other developers. Sometimes developers send me a link to their changes for code review (BTW if you want to practice pre-commit review you can ask your developers to send links to their "remote run" changes). Change details page shows me important information related to a change in one place.
Note that "My changes" page now shows similar information for all of my changes.
4. Issue tracker integration
I was a bit sceptical about this feature. But it turned out that it gives a fast way to obtain more details on a submitted change.
How often do you see comments like: TW-3431 fixed? If you need to know more details about fixed bug, you have to click on a link or switch to an issue tracker and search for this issue. Now, if issue tracker integration is configured in TeamCity you can move your mouse over the "TW-3431" in the TeamCity UI and see the bug title. Even such a simple feature can save some time.
Of course the whole feature of issue trackers integration is bigger than that, however showing of the bug title is what I use most often.
5. Incremental update of the build log
Previous versions of TeamCity did not update build log page and you had to press F5 in your browser to get more recent information. This is not the case anymore. Now "All messages" page of the build log updates automatically. It also keeps scrolling at the bottom of the page.
Now when I need to see a full build log of a build in TeamCity 4.5 I sometimes forget to refresh the page. People quickly get used to good things.
So these are top 5 features of the TeamCity 5.0 I use most often. What features do you use?