Next: , Previous: , Up: BASS v0.1.0-183-g3099564   [Index]


Overview

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)    │                 │   
        │                │ <──────────────│                 │   
        │                │                │                 │   
        │                │                │                 │