Next: Install, Previous: Why?, Up: BASS v0.1.0-183-g3099564 [Index]
BASS ecosystem has at least three separate roles for the involved machines:
All of them use shared filesystem(s). There is no any kind of network
protocol API between the nodes. No explicit queue manager, lock manager
or anything like that. Just a shared filesystem. You can run all of that
on single computer with single generic filesystem. You can share some
parts of it via nullfs
with isolated slave jails. You can run
them on remote machines connected with NFS. SMB and CephFS are
POSIX-compatible enough and also have mkdir
operation atomic,
which is the only requirement here.
Build node prepares binary packages and saves them on shared directory, making them available to slave nodes. Master node creates task in shared directory. Slave takes it, and starts a job, executing the steps included in the tasks, which may install those prebuilt binary packages. Job’s results are saved in shared directory, which is browseable on master node.
┌─────┐ ┌──────┐ ┌───┐ ┌─────┐ │build│ │master│ │NFS│ │slave│ └──┬──┘ └──┬───┘ └─┬─┘ └──┬──┘ │ skelpkg(s) │ │ │────────────────────────────────>│ │ │ │ │ │ │ │ task │ │ │ │ ──────────────>│ │ │ │ │ │ │ │ │task, skelpkg(s) │ │ │ │────────────────>│ │ │ │ │ │ │ │ job │ │ │ │<────────────────│ │ │ │ │ │ │ view(job) │ │ │ │ <──────────────│ │ │ │ │ │ │ │ │ │