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?