Serpent OS Infrastructure - Live
Ikey Doherty
ikey at serpentos.com
Thu Mar 23 16:39:17 UTC 2023
So normally a post like this really isn't that interesting.
However, our infrastructure has been written in D and is now
live!
We've had a couple of teething problems, notably libcurl on Alma
Linux is super outdated, and hit pthread_t exhaustion when using
`task!FN().executeInNewThread` so we switched to a thread pool ...

Other than that, it's rolling.
Blog post:
https://serpentos.com/blog/2023/03/18/infrastructure-launched/
**Code**
Summit (dashboard): https://github.com/serpent-os/summit
Avalanche (builder as a service):
https://github.com/serpent-os/avalanche
Vessel (repo manager): https://github.com/serpent-os/vessel
Boulder (build tool): https://github.com/serpent-os/boulder
Moss (package manager): https://github.com/serpent-os/moss
Shared service APIS: https://github.com/serpent-os/moss-service
Shared package APIS: https://github.com/serpent-os/libmoss
Instance: https://dash.serpentos.com
**Basics**
The build components are paired using a REST API, public keys and
EdDSA JSON Web Tokens. The dashboard schedules builds using a
graph, fetching the git recipes and determining missing builds.
TLDR every missing build gets scheduled and ends up in the
repository's public tree.
Right now we're running it at a small scale to find out various
teething issues, but do have plans to scale it beyond the current
setup. Long story short we're looking to a k8s style setup with
separate postgresql (rather than lmdb), and transient builders
rather than the current pairing system for blessed instances.
Also we're growing highly tired of relying on C libs that are
host OS dependent, and are planning a rearchitecture of the core
tooling around fibers (using vibe.d core APIs) which will lead to
more natural idioms (allowing us to kill our predominantely OOP
approach and move towards ducktyping and significantly less
allocations)
More information about the Digitalmars-d-announce
mailing list