feat: support multiple Forgejo runner registrations #11

Closed
thesimplekid wants to merge 0 commits from shared_reg into main
Owner

Allow personal and organization Forgejo runner registrations to execute jobs through one Rith controller and VM pool while sharing global concurrency, CPU, memory, disk, and template limits.

  • Add named registrations with independent credentials, labels, polling, retry backoff, and health status, with fair admission across registrations.
  • Scope task identities, fetch journals, log archives, and delivery retries by registration. Bind saved deliveries to their original server and runner so overlapping task IDs and restart recovery cannot cross registrations.
  • Preserve existing single-registration configuration and task IDs. Add NixOS options and an Agenix example, with writable locks and log directories for secret-managed credentials.
  • Isolate unavailable registrations during service startup while preserving strict manual configuration checks and runtime credential permission checks.

This branch is stacked on PR #10 and currently includes its resource-summary and Prometheus changes. Merge #10 first.

Validation: all 287 tests, strict Clippy, and all nine x86_64-linux Nix flake checks passed. Tests cover shared budgets, fair admission, overlapping IDs, credential isolation, restart recovery, and configuration compatibility. Live multi-registration Firecracker validation remains pending because the development environment has no /dev/kvm.

Fixes #8.

Allow personal and organization Forgejo runner registrations to execute jobs through one Rith controller and VM pool while sharing global concurrency, CPU, memory, disk, and template limits. - Add named registrations with independent credentials, labels, polling, retry backoff, and health status, with fair admission across registrations. - Scope task identities, fetch journals, log archives, and delivery retries by registration. Bind saved deliveries to their original server and runner so overlapping task IDs and restart recovery cannot cross registrations. - Preserve existing single-registration configuration and task IDs. Add NixOS options and an Agenix example, with writable locks and log directories for secret-managed credentials. - Isolate unavailable registrations during service startup while preserving strict manual configuration checks and runtime credential permission checks. This branch is stacked on PR #10 and currently includes its resource-summary and Prometheus changes. Merge #10 first. Validation: all 287 tests, strict Clippy, and all nine x86_64-linux Nix flake checks passed. Tests cover shared budgets, fair admission, overlapping IDs, credential isolation, restart recovery, and configuration compatibility. Live multi-registration Firecracker validation remains pending because the development environment has no /dev/kvm. Fixes #8.
Collect guest memory, VMM CPU and memory, OOM evidence, and disk and
network counters to guide Firecracker sizing and concurrency decisions.
Expose live and retained summaries through the job API, including phase
timings, template resources, and observed concurrency.

Checkpoint measurements across controller restarts, retain partial reports
when final samples are missing, and bound retention with job history.

Export resource histograms, completion and missing-measurement counters,
and live memory and concurrency gauges through the existing /metrics
endpoint. Keep labels bounded and omit missing histogram observations.
Document measurement boundaries and Grafana/PromQL sizing examples.

Cover attribution, persistence, protocol compatibility, failure handling,
and Prometheus export with tests.

Rebuild guest images alongside the controller and launcher to enable
collection. Live Firecracker validation remains pending.
Add named Forgejo registrations with independent credentials, labels,
polling, retry backoff, and health status. Share one scheduler and its
concurrency, CPU, memory, disk, and template admission limits, rotating
admission priority between registrations.

Namespace task IDs at the client boundary so overlapping remote IDs keep
separate jobs, archives, fetch journals, and delivery retries. Bind saved
deliveries to their original server and runner, and preserve legacy IDs
and single-registration configuration.

Expose NixOS registration options with writable locks and logs for
Agenix-managed credentials. Isolate unavailable registration credentials
at service startup while retaining strict manual configuration checks.
Document configuration, recovery, and credential rotation.

Cover shared budgets, fair admission, overlapping IDs, credential isolation,
restart recovery, and configuration compatibility with tests. Live
multi-registration Firecracker validation remains pending.

Fixes #8
thesimplekid closed this pull request 2026-10-22 17:38:54 +00:00

Pull request closed

Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
thesimplekid/rith!11
No description provided.