This section outlines the proposed (minimum) build machines necessary for the MoMo infrastructure. The goal is to get a base infrastructure in place.
- Buildbot master. This will provide a web interface to see the status of any of the buildbot slaves. In addition, it should be possible to launch a build from this web interface as well.
- 3 Buildbot slaves, one for each platform. There are reference platforms available from MoCo. TODO: need link to the most current reference platforms. The linux and windows machines can be VMs. So far in MoCo, the mac build slaves are physical mac machines and not VMs. These would be responsible for the nightly and release builds.
- 3 Tinderbox clients. These will reside on the same VM and physical hardware as the Buildbot slaves, above.
- A Tinderbox server. We can most likely just use the existing Tinderbox server at MoCo. The tinderbox server simply receives emails about builds and updates a tinderbox waterfall.
It would be a good idea to build this as a staging environment and then when everything is running smoothly, build an identical environment for production. This does double the number of machines & VMs that we need to maintain, but it does give us a test / staging area to try out new configurations, software and extensions (such as integrating Talos test machines) to our build infrastructure.
At a minimum for our new staging environment, we would be looking at 1 MAC + 3 VMs (2 linux, 1 Windows). For a production environment, we would duplicate this.
To think about
- We may need 3 additional buildbot slaves in order to separate dep from the nightly & release builds. Otherwise, during a release we are in the position of not being able to do dep builds. This will become increasingly important as MoMo begins working on multiple lines of development.
- Apple does have some server virtualization stuff available. It may be worth investigating so that we can do all builds on VMs. VMWare Fusion reportedly can now run OS X VMs on Apple hardware, might do the trick.
- Performance testing should not be done on VMs as results will most likely not be consistent. Perf tests should be done on dedicated hardware.