3
votes

We have a particular build configuration which is required to run a lot of personal builds without long delays. Is it possible to dedicate particular agents to just running personal builds? For example, if we have 5 agents is it possible to have all 5 able to run personal builds, but only 3 of them to get fired by the VCS trigger? The only way I can see to do this would be to create 2 agents pools. The problem with this approach is that you have to specify particular projects for each pool which would involve duplicating build configurations.

Currently personal builds are configured with a higher priority in the build queue, but this doesn't help prevent delays when all agents are running (slow) integration tests. Ideally these integration tests would be queued up until one of the 3 build agents able to run them was free. There are a number of workarounds to help reduce the impact, it would be good to know whether it is actually possible to dedicate agents to remote builds.

We are running the latest version of TeamCity as of Jan 2013 which is 7.1.3.

1
What is your initial problem? You are asking about particular solution, but it would be good to understand your real problem. As I understand it is that you have limited number of agents (due to licence?) and your slow integration tests are blocking developers' personal builds, correct?Krzysztof Wolny
Yes - the problem is exactly what you describe. Personal builds getting queued due to agents executing long running configurations. We still have the same issue now when running the latest version April 2015 (v9.0.3).infojolt
So how about inverting your questions, and try to run slow integration tests on particular agents and leave the rest for personal builds?Krzysztof Wolny
If you restrict the integration tests to a particular agent, it wouldn't be able to run personal builds for that configuration on any of the other agents.infojolt
I didn't get it. If you restrict integration tests to the particular agent, you will be able to run the same configuration build on other machines. Unless you set up the tests to be able to run only 1 instance at time.Krzysztof Wolny

1 Answers

0
votes

You can achieve this by specifying agent requirements. Pick a parameter that differentiates the 3 agents you want triggered automatically by VCS from the other 2 agents. Add it as an agent requirement in every build configuration except the one you want to run on all 5 agents. This way, you'll restrict the integration tests to 3 agents and free up the remaining 2 agents to run only the configuration requiring a lot of personal builds.

Also, your suggested solution with agent pools many not seem too bad if you use build configuration templates.