Goals

Upgrade ability from the master to the clients == keep local configs separate from the main build script

Would be nice

Use persistent SSH sessions instead of opening and closing multiple per build

Support rbutil builds?

Support manual builds?

Ideas

Things we want (to consider) in the new build system.

A Speculative parallel builds

All BCs pick an unfinished build as long as not all builds are done. This means that towards the end, more than one BC will build specific builds and the fastest one will be used. This also means that the slower BCs need to be told to kill their build when another BC already completed an upload.

B Allow More than One Admin

We need to allow for a multitude of admins to be able to allow new clients to join the fun.

C Prioritize builds recently done on same BC

Allow BCs to ask for "preferred builds" so that they can ask for builds it recently did, and thus make better use of ccache.

D Allow updates from server

One problem of the existing solution is that we allow a bit too much configuration of the main build script in a way that it made it impossible for us to upgrade the remote builds scripts.

E Auto-ranking of build clients

Use build and uploads speeds (over time) for particular BCs to calculate which BC that ought to get which builds. May of course conflict with (C)

F Uploading in the background

Make the BC start the next build while uploading the previous one.

Client/server protocol

Each client keeps a control channel open against the build server, for commands and information.

Control channel is a SSL connection with unique certificate for each build client