github-actions

module
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 23, 2026 License: AGPL-3.0

README

GitHub Actions fleet engine

Open-source control-plane components for secure, disposable GitHub Actions runners on GARM and Incus. The engine provides durable queue admission, provider leases, one-job container lifecycle, exact image identity, diagnostic WAL export, pressure-aware placement and observable reconciliation.

This repository contains only product code and synthetic examples. Real tenants, repositories, hosts, networks, credentials, deployment values and runtime evidence belong in the consuming private estate.

The Drakkars product contract defines the portable outcome, three-level priority model, technology compatibility and whole-pipeline performance standard implemented by this engine.

Properties

  • GitHub JobAssigned is observation-only; complete JobAvailable identity is required before capacity reservation.
  • Ambiguous GitHub/provider evidence fails closed.
  • Each worker executes one job and is destroyed.
  • Diagnostic data is retained locally until remote size, digest and schema are confirmed.
  • Organization-scale-set workers receive no repository credential at create time. A one-time, 15-minute claim lets the synchronous job-start hook bind the server-provided GITHUB_REPOSITORY to an estate allowlist and receive only that repository/pool trust role. Claim retries are idempotent; another repository, runner, role, expired token or replay after cleanup fails closed.
  • reconcile-diagnostic-storage plans, applies and reads back the remote hard quota and prefix lifecycle as one source-controlled durability contract. A consuming estate sizes the quota from measured retention, burst and outage demand; reaching the hard quota is never treated as normal backpressure.
  • Host-local CPU, memory and I/O PSI is converted into a hysteretic, expiring Incus member signal; missing, stale or closed signals remove capacity rather than becoming provider failures or hidden overcommit.
  • Public repository CI runs only on standard GitHub-hosted runners.
  • Private Linux jobs can use the trust-scoped package cache over their existing one-job RustFS identity; compiler and package caches remain separate, measurable layers.
  • Checksum-pinned standalone tools can use the immutable tool cache, which prefers the VPC-local object and falls back to the exact upstream URL.
  • Configuration examples use documentation identities and address ranges.

Development

go test ./...
go test -race ./...
go vet ./...
go build -trimpath ./...

config/example-*.yaml demonstrates the typed contract. It is not deployment state. Consumers supply their own exact values from a separate private estate.

Directories

Path Synopsis
cmd
gha-benchmark command
gha-fleet command
internal
cachenamespace
Package cachenamespace is the one place a compiler-cache object key is built.
Package cachenamespace is the one place a compiler-cache object key is built.
fleetcontract
Package fleetcontract assembles the one statement of what this fleet offers.
Package fleetcontract assembles the one statement of what this fleet offers.
garmderivative
Package garmderivative is the typed reading of config/garm-derivative.yaml, the manifest that describes how the in-tree GARM derivative is built and what it must come out as.
Package garmderivative is the typed reading of config/garm-derivative.yaml, the manifest that describes how the in-tree GARM derivative is built and what it must come out as.
hostcapacity
Package hostcapacity derives how many workers of a class a host can run at once, from what the host configuration already declares.
Package hostcapacity derives how many workers of a class a host can run at once, from what the host configuration already declares.
incusplacement
Package incusplacement renders the cluster-wide Incus placement policy for disposable CI workers.
Package incusplacement renders the cluster-wide Incus placement policy for disposable CI workers.
pressuregate
Package pressuregate turns local Linux PSI and OOM observations into a bounded, hysteretic Incus cluster-member admission signal.
Package pressuregate turns local Linux PSI and OOM observations into a bounded, hysteretic Incus cluster-member admission signal.
providerrelease
Package providerrelease is the typed reading of config/provider-derivative.yaml, the one statement of which Incus provider this tree builds and admits.
Package providerrelease is the typed reading of config/provider-derivative.yaml, the one statement of which Incus provider this tree builds and admits.
telemetryattrs
Package telemetryattrs owns the stable semantic vocabulary emitted by NDDev Drakkars components.
Package telemetryattrs owns the stable semantic vocabulary emitted by NDDev Drakkars components.
tenant
Package tenant enumerates the accounts this fleet may serve.
Package tenant enumerates the accounts this fleet may serve.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL