I am wondering how to solve this:
I have TeamCity on premise with a virtual machine (VM) for the server and another VM for the build agent.
The build agent VM has installed:
- Build Agent 1 running as BuildAgent1 service under User Account 1
- Build Agent 2 running as BuildAgent2 service under User Account 2
- Build Toolchain 1 without license restrictions
- Build Toolchain 2 with 1 license linked and dedicated to the machine
- Build Toolchain 3 with 6 network licenses shared with developers
- Project 1 built with Build Toolchain 1
- Project 2 built with Build Toolchain 1
- Project 3 built with Build Toolchain 2
- Project 4 built with Build Toolchain 2
- Project 5 built with Build Toolchain 3
- Project 6 built with Build Toolchain 3
Both Build Agents can build all projects. I would like to keep it like that for flexibility reasons.
What is possible?
1) Project 1 and Project 2 can be built concurrently, since there are no license restrictions.
2) Project 3 and Project 4 can be built only one at a time, since there is only one Toolchain license.
3) Project 5 and Project 6 can either not be built at all or one at a time or concurrently depending on the number of available network licenses.
I wouldn't like to see the build fail due to unavailable toolchain licenses.
reg. 2) How can I prevent that an agent processes the build if another build with the same toolchain is currently running? This can easily happen and has the highest priority for me.
reg. 3) In this case I assume a way to check for available network licenses before starting the build is required. This of course depends on the licensing tool of the Build Toolchain 3. Running out of available licenses in this case is relatively unlikely.
The "Maximum Agents" setting in the Agent Pool doesn't seem a way to solve 2).
Currently I have both Agents and all Projects in the same Pool.
Any ideas? Do I oversee something?