We have many solutions and each of these solutions have web projects and class library projects that the web projects in the solution refer to. Ultimately the assemblies from all the solutions go into a single website
Also note that the same project (Web or class library) may appear in multiple solutions and all the solutions also reference assemblies from a common location in TFS
At the moment we have individual builds for each of the solutions and they are set to be triggered manually As a result developers are able to check-in partial/incorrect check-ins and not realizing that they are injecting compile errors in one or more solutions
So we finally decided to have gated check-ins so that those changes that introduce compile errors are stopped from checking in
Question is how to we proceed? Each of the solution is quite big with over 30 projects
If we create gated check-in build for each solution, the build will take over 20 minutes to complete and that is too much of a time for developer to get a feedback that their changes are accepted or rejected
One solution may be to create gated check-in build for individual web projects, this will reduce the feedback time for developers but that will lead to too many builds to create and maintain Also when we have build per project and developers make changes to common files across projects (builds) one build may succeed while other may fail and thus allowing developers to check-in changes that will still break builds
Are there any guidelines to follow for scenarios like this?