Sorry for the vague title. I have a set of problems with our TeamCity configuration but, nebulous as it is, the complexity of the configuration seems to be at the heart it.
In theory we have a pretty straightforward need: We have a single Visual Studio soluton for a moderately large (~1m LOC) codebase - primarily C++.
We're currently building three branches (but this, too, may increase). At the top level we have two projects: full (overnight) and intraday (incremental) - which don't do much in themselves - they just depend on a number of other projects.
Then at the lower levels we have our compilation projects - split into two configurations (at the moment - this may increase in the future so would like to get on top of the complexity sooner): debug and release - these can run in parallel.
Then we have unit test projects that depend on these.
After that we split into (potentially parallel) projects: packaging and "secondary testing" (a mixed bag of other tests, such as integration tests, regression tests etc). Finally the top level projects join on the last four (packaging & secondary testing x debug and release). So, when we have multiple agents available, we can be running up to four parts of a single top level build at once. That's great - we really need that, and accept that that brings with it a certain amount of complexity.
However I'm still not sure this is the best way to arrange things. Previously we were using CC.Net. We didn't have the parallelism - but we did have a much simpler setup: two lines in cctray per branch (intra and full). The whole of cctray fit in a window just over an inch high at the foot of the screen.
Now I have a full-screen browser open on a 27" monitor - in portrait orientation - and it only displays half my projects summary view!
Seeing what's going on and where at any particular time is very difficult (even for me - as the one who maintains this - the rest of the team have largely given up - they just ask me). Maintaining the configurations is error prone, tedious and just plain hard! There are so many places I have to propogate changes to - there's very often a big ripple effect - and there's no sane way to go in and out of the configs other than going back to the top level again and diving back in! And, yes, before you ask, I'm making heavy use of templates.
So am I doing something wrong - or is this really the cost I have to pay to get a reasonable degree of parallelism?
There are other issues I have - which are somewhat related - but I'll save those for further posts.
Oh. This is all on TeamCity 9.1.4 (I just upgraded at the weekend).