Auto-tools/Projects/ChangesetBuildServer

From MozillaWiki
Jump to: navigation, search

Changeset Build Server

The changeset build server would be a machine that takes changeset requests from clients and builds them either on cloud (EC2) or on a local set of servers. Since we're not sure about the cost-effectiveness of EC2 for building right now, this is a more generic server.

Underlying Technologies

1. Celery

pip install celery

2. RabbitMQ (using Pulse's server, legneato helped me set this up)

The Pulse RabbitMQ server is used as a broker, and build machines are all running the celery daemon with a task definition for building.

Proposed Architecture

aiBGA.gif

Here's the really sweet part about using Celery: if we have 0 build servers even looking for requests, our request server can still take requests and wait until builders come online to send requests!

If the build machines are Macs of some sort, it is feasible to do *all* builds on them including linux and windows with the help of VMWare Fusion. A command line tool exists to boot up VMs and build. From there it's a simple matter to scp files to the right location.

Another possibility is a setup like 1 mac builder, 1 win builder, 1 linux builder. In that case, we can set up celery to put things into 3 queues, and build servers will be configured only to look at their respective queue based on their OS. With this kind of setup we can also mix and match using EC2 if it comes to that. Relevant link: Celery Exchanges and Queues

Status

Contact

  1. ateam channel (harth, ctalbert, samliu), or sliu@mozilla.org