0
votes

Our dev team is at that stage where CI will ease our pains. So for the past two days i have been looking at CI solutions, and it basically came down to 2 options:

  1. TeamCity
  2. Jenkins

I did some serious reading, and compared the two, and i am leaning towards TeamCity. This is not a comparison question

Our team has multiple solutions, each solution consisting of multiple projects. Our current build process is vanilla....

  1. Set to Release
  2. Right Click Build

Take release and copy to DEV/QA/PROD.

The only thing confusing me a bit is the Build Configurations of TeamCity. With the free versions you get 20 build configurations. I have not installed either so i am not sure how the build configurations work.

Can one Build Configuration be shared by multiple projects, or does one have to have a build configuration for each project?

This will ultimately be the deal breaker, as we have close to 40 solutions, with at least 3 projects per solution.

If build configurations are directly linked to projects, then that means we need at least 120 build configurations. This will not be an easy sell to Management.

Can someone give me a bit more insight on how TeamCity's build configurations work?

2

2 Answers

1
votes

Build configurations do not have a 1-1 relationship with projects, we have over 100 projects in one solution and only 3 build configurations for it, Tests, Nightly and Release.

A Build configuration can contain multiple Build steps.
Each of these build steps can carry out an action, that could be running msbuild, a script, unit tests, octopus deploy, etc.
You could have multiple build steps within a configuration building different sets of projects within the solution if you've got different targets set up in the solution or a build project.

You could, if you really wanted to for some masochistic reason, have a single build configuration building all 40 of your solutions.
But the ease or difficulty of that may depend on how you've got them version controlled. TeamCity has a concept called VCS Roots (version control system).
If you want to build multiple solutions in a single Build configuration, you will either have to set up multiple VCS roots for the Configuration if they're in separate repos, or you could set up scripts that pull your repos.
If related solutions that might need to be built together are in the same repository then you could get away with one VCS root.

0
votes

Normally you would have one build configuration per solution, since in the build configuration you define build steps, one of which is MSBuild or Visual Studio etc

We use Fake for our build, but 'Build and Test using Fake' is a build configuration, and then on the main TeamCity page you'll see the status like this:enter image description here