builder

Scheduling and executing shell jobs
README

This consists of three programs, a worker, a server, and a client. The single
server contains a queue of jobs, which are consumed by a worker. Any number of
worker can be connected to the server. The client can modify the schedule:
add/remove/modify jobs, also observe a concrete job.

The server keeps persistent state of the job queue (so restarts / crashes are
dealt with). A worker connects, provides some information about itself, and
then waits for a job. Once a job is read and accepted, it is executed by the
worker. Resulting artifacts can be transferred by the client to the server.

The client has the ability to schedule jobs at regular intervals - similar to
crontab - but workers are usually executed in sandboxes/ jailed environments.

Handled and unhandled error conditions:

  • worker execution fails (timeout, restart, killed): not handled, but server has a timeout

  • worker execution gets a signal: reported to server

  • worker can't write job data files -> failure is captured and reported

  • worker can't read job output -> logged to client's console (without artifacts gathered)

  • worker errors when submitting console output -> ignored

  • worker fails communication with server -> job is ignored (the server is responsible for restarting)

A templating mechanism is available, look for orb-build.template as examples.
Currently FreeBSD, Debian and Ubuntu are supported, and a repository that
receives jobs is live at https://builds.robur.coop/

Install
Published
05 Oct 2021
Sources
builder-v0.1.1.tbz
sha256=9bb83dd8fa913458e4f4a4da9f969b70978e93e0e5d58e6380dd1eafc57e594b
sha512=250cec63e16adced2a4575dd9bf9fd73ac049368676b851bae51d0db7ac9f7126cfc855768b069b84166a239e419fe50257e0caed0f610be597dcd8fa96b9b89
Dependencies
Reverse Dependencies