I am planning a TeamCity set-up. In my scenario development staff for an individual project are largely located in a single site. But the multiple projects / development groups are distributed globally. This is largely J2ee and .Net based development with some isolated cases of C++ development. J2ee production environments mostly run on AIX.
I am planning to setup a central TeamCity installation with a single windows based TeamCity server and an agent pool of windows virtual machines. Each of the agent machines within pool will host single build agent installation. Pool size can be increased and decrease based on needs. In this kind of set-up it would easier to reuse infrastructure resources / build agent across projects and for multiple purposes. There are clear time zone advantages i.e. project 1 timezone is not overlapping with project 2 so they can both use the same use the same agent in the pool. And with windows based agents it would be possible to use them for multiple purposes like say j2ee as well as .net development, say also for selenium based automation testing etc.., CI builds and nightly builds (which includes broader build routine).
I am planning to centralise most of the roles with admin staff and development team would mostly get only view rights and trigger/stop rights. This way administrators shall be able to effectively plan the agent resource usage & predictability of build elapsed times. Also this way they shall also be able to keep a watch on what all build resources (ant, maven, visual studio etc..) are required on build agent machines.
The project team would largely be advised to get build resources from the SCM system (Subversion) and not expect that the resources would be available locally on build agent machine. Offcourse, there would be some exceptions like Visual studio which would require local installation.
Can you please let me know your experiences, suggestions on this and any possible problems with above approach.