Build agents HowTo

Currently we just have one default build agent.
This was OK for some months, but now we have to install additional ones.

My question is: What is the recommended way to install additional build agents?

Here are some of the variants I can think of:
- Install more build agents based on one operating system. How do I separate the build agents? By different users? Can I use one common Maven repo?
- Make virtual machines (e.g. with VMware) and install just one build agent per virtual machine. This approach seems most promising to me.
- other suggestions?

The virtualization approach has the following advantages:
- Installing a new build agent is just a matter of copying another virtual machine image.
- If one virtual machine fails, recovery is easy. I've encountered some problems with the default agent which runs on the same machine as the build server.
Open questions in this scenario:
- Are there any performance issues that I should consider?
- How should I configure one build agent virtual machine in terms of CPUs, RAM, disk space?

6 comments

Our TeamCity setup is completely virtualized and I'm quite happy with it, so I'd definitely recommend this route.

One VM runs TeamCity and Apache (for SVN) while 3 others function as build agents.

Our VM's are configured as follows:
OS: Windows Server
CPU: 2 Virtual CPU's
RAM: 2GB
Hard Drive: 20GB

0

Hello Alfred,

AS> Currently we just have one default build agent.
AS> This was OK for some months, but now we have to install additional
AS> ones.
AS> My question is: What is the recommended way to install additional
AS> build agents?
AS>
AS> Here are some of the variants I can think of:
AS> - Install more build agents based on one operating system. How do I
AS> separate the build agents? By different users? Can I use one common
AS> Maven repo?

We have one agent running on the build server machine and a couple of other
instances on a different box. The ones on the same box are installed in two
separate directories and run on different ports (and have different names
just for the sake of it) and each has temp and work directories relative
to their install path. One of them runs as a service, the other one has to
be started manually (we haven't looked into how both of them could be set
as services).

Virtualization sounds interesting, but not sure if it's worth spending resources
on it when starting multiple agents on a single box is so simple.

HTH,
Andrei


0

In Jetbrains we created a hard disk image and every new agent we setup from this image. We update this image from time to time, to install new versions of Java, .NET and so on.

--
Pavel Sher

0

Hello Ray,

thanks for your immediate response. I'm quite happy with what you write :) I like the idea of separate "boxes", even if they are only virtual.

A last question:
There are two possibilities of using disks in VMware:
a) virtual disks (VMDK files)
b) physical disks
I heard that using physical disks is much more performant than using virtual disks.

Do you know anything about this issue?
How are your disks set up?

0

We are using virtual disks for all of our machines and have found the performance extremely good. Some things to note though:
1. We are using VMWare ESX Server, not VMWare Server (Free) or Workstation as the VM Host.
2. Our TeamCity data directory is hosted on a Network Share (See http://intellij.net/forums/thread.jspa?threadID=275147&tstart=15 for potential issues with this) :)
3. Our backend database (Oracle) is hosted on a separate machine
4. Our builds are extremely CPU intensive, so the processor tends to be our bottleneck, rather than disk access.

Hope this helps.

Ray

0

Thanks for all the prompt and helpful replies!!
Alfred

0

Please sign in to leave a comment.