Next-generation Nix CI system for clowns
- Rust 69.7%
- Nix 20.2%
- HTML 6.3%
- PLpgSQL 2%
- CSS 1.8%
Can be configured from the config file, and also using environment options. ```toml [database] url = "postgresql://fc_ci:password@localhost/fc_ci" max_connections = 20 min_connections = 5 connect_timeout = 30 idle_timeout = 600 max_lifetime = 1800 ``` We'll want to support SQlite in the future, and better secret handling for database credentials. For now, this is workable. --- Signed-off-by: NotAShelf <raf@notashelf.dev> Change-Id: I36b4c1306511052a2748ca9d5d3429366a6a6964 |
||
|---|---|---|
| crates | ||
| docs | ||
| .envrc | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| flake.lock | ||
| flake.nix | ||
| README.md | ||
FC
FC is a modern, Rust-based continuous integration system designed to replace Hydra for our systems. Heavily work in progress.
Architecture
- server: Web API and UI (Axum)
- evaluator: Git polling and Nix evaluation
- queue-runner: Build dispatch and execution
- common: Shared types and utilities
Development
nix develop
cargo build
Components
Server
Web API server providing REST endpoints for project management, jobsets, and build status.
Evaluator
Periodically polls Git repositories and evaluates Nix expressions to create builds.
Queue Runner
Processes build queue and executes Nix builds on available machines.