spindle architecture#
Spindle is a small CI runner service. Here's a high level overview of how it operates:
- listens for
sh.tangled.spindle.memberandsh.tangled.reporecords on the Jetstream. - when a new repo record comes through (typically when you add a spindle to a
repo from the settings), spindle then resolves the underlying knot and
subscribes to repo events (see:
sh.tangled.pipeline). - the spindle engine then handles execution of the pipeline, with results and logs beamed on the spindle event stream over wss
the engine#
At present, the only supported backend is Docker. Spindle executes each step in
the pipeline in a fresh container, with state persisted across steps within the
/tangled/workspace directory.
The base image for the container is constructed on the fly using Nixery, which is handy for caching layers for frequently used packages.
The pipeline manifest is specified here.