We use virtual machines and a Hudson server.
We have a virtual machine for each architecture we support (usually compilation does not stretch the resources allocated to it, so the virtual machine is fine). I think that the configuration of each virtual machine can be controlled by something like Puppet or Chef to provide its suitable build environment. Of course, you can use real machines if you have the equipment, but you would like to avoid using machines that people actually use (for example, developer workstations).
Then we use a project with several configurations in Hudson to customize the build matrix. The build matrix allows us (with one click) to create several versions of python on several architectures, but theoretically you can create each and any combination that you can customize in your matrix. Of course you could use Jenkins.
Mark streatfield
source share