Build projects seem too complex

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).
1 comment

Hello Phil,

Do you use Build Chains views? You can review build chains on both project and build configuration pages: each of those pages has a Build Chains tab. You can click a build in a chain to highlight this build and all its direct dependencies (both upstream and downstream).

>Maintaining the configurations is error prone, tedious and just plain hard! There are so many places I have to propagate 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

You can go to build configuration settings from build chain view. Also if you have build configuration open in Administration you can click on build configuration icon to go to build configurations on the same level, see screenshot:
Screen Shot 2015-11-24 at 13.43.27.png
Another tip is to use "q" and search project/build configuration by name.
Could you please provide examples what exactly difficult to maintain?

0

Please sign in to leave a comment.