forked from tangled.org/core
this repo has no description
1# spindle architecture 2 3Spindle is a small CI runner service. Here's a high level overview of how it operates: 4 5* listens for [`sh.tangled.spindle.member`](/lexicons/spindle/member.json) and 6[`sh.tangled.repo`](/lexicons/repo.json) records on the Jetstream. 7* when a new repo record comes through (typically when you add a spindle to a 8repo from the settings), spindle then resolves the underlying knot and 9subscribes to repo events (see: 10[`sh.tangled.pipeline`](/lexicons/pipeline.json)). 11* the spindle engine then handles execution of the pipeline, with results and 12logs beamed on the spindle event stream over wss 13 14### the engine 15 16At present, the only supported backend is Docker (and Podman, if Docker 17compatibility is enabled, so that `/run/docker.sock` is created). Spindle 18executes each step in the pipeline in a fresh container, with state persisted 19across steps within the `/tangled/workspace` directory. 20 21The base image for the container is constructed on the fly using 22[Nixery](https://nixery.dev), which is handy for caching layers for frequently 23used packages. 24 25The pipeline manifest is [specified here](/docs/spindle/pipeline.md).