digitalmars.D.announce - Serpent OS Infrastructure - Live
- Ikey Doherty (37/37) Mar 23 2023 So normally a post like this really isn't that interesting.
- M.M. (4/8) Mar 23 2023 Wow! That's a whole lot of work, and very interesting one. I
- Ikey Doherty (5/14) Mar 24 2023 Oh there's so much to do! We took the decision to aim for our
- zoujiaqing (2/41) Mar 24 2023 Great project!
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 ... ![img](https://serpentos.com/static/img/blog/infrastructure-launched/Featured.webp) 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)
Mar 23 2023
On Thursday, 23 March 2023 at 16:39:17 UTC, Ikey Doherty wrote:So normally a post like this really isn't that interesting. However, our infrastructure has been written in D and is now live! [...]Wow! That's a whole lot of work, and very interesting one. I guess there's still a lot to be done. I go read more on the project website, and wish good luck with the project.
Mar 23 2023
On Thursday, 23 March 2023 at 19:31:12 UTC, M.M. wrote:On Thursday, 23 March 2023 at 16:39:17 UTC, Ikey Doherty wrote:Oh there's so much to do! We took the decision to aim for our PoC so we could buy approx. 6 months to build the rest of the project out. Learning how to do CI/CD via DLang has been really fun =)So normally a post like this really isn't that interesting. However, our infrastructure has been written in D and is now live! [...]Wow! That's a whole lot of work, and very interesting one. I guess there's still a lot to be done. I go read more on the project website, and wish good luck with the project.
Mar 24 2023
On Thursday, 23 March 2023 at 16:39:17 UTC, Ikey Doherty wrote: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 ... ![img](https://serpentos.com/static/img/blog/infrastructure-launched/Featured.webp) 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)Great project!
Mar 24 2023