components - nicholasdavidson/pybit GitHub Wiki
The system is proposed to consist of the following components:
- Database (PostgreSQL?).
- Schema TBD
- SVN hook(s).
- Produces a message that a package has changed, specifying the architecture, version, VCS revision and platform.
- Build Controller (Python).
- Sits between the queue and the SVN and Database.
- Reporting Agent (Language?) + Web Interface (PHP?).
- Should this be in two parts, the frontend, and a backend? - May be beneficial to expose a well-defined web API?
- Summary page to view the current buildd status
- Packages (and versions) being built, packages waiting for build-dependencies and packages which have failed to build
- Separate pages show the status of each buildd (load averages etc...), schedule specific rebuilds and allow jobs to be cancelled.
- Message Queue(s) using RabbitMQ?
- There will be platform queues (i.e. Debian, Windows) which will contain arch queues like i386, armel.
- There will also be a control queue which can have commands like status, cancel.
- Build client(s) (Python).
- These should be the only bit that cares about the specifics about how debian packaging works etc...
- It is important to note that these will not know about the database, just the message queue.
- One machine will run one buildd. Otherwise, we will use virtualisation. - as i.e. pythom-amqplib is not thread safe.
- Virtual server(s) to run Rabbit, Postgres, and the build controller on, and some buildboxes.
- Need to think about security. SSL etc?