Documentation
¶
Overview ¶
Command ermite-runner runs CI jobs for an ermite server. Each job runs in its own Firecracker micro-VM, or in its own container when the host has no KVM, and executes workflows compatible with GitHub Actions.
Subcommands: version; register stores a runner token obtained from ermite; run fetches jobs from ermite and runs each in a sandbox; init and exec run inside a sandbox (guest PID 1, and the executor); sandbox-check runs one stub script through the selected isolation mode and prints its output.
Directories
¶
| Path | Synopsis |
|---|---|
|
internal
|
|
|
actionscache
Package actionscache is the host-side cache of action archives (plan CI-4, D8).
|
Package actionscache is the host-side cache of action archives (plan CI-4, D8). |
|
cachesvc
Package cachesvc is the GitHub Actions cache service (API v1) of the runner (plan CI-3, D8).
|
Package cachesvc is the GitHub Actions cache service (API v1) of the runner (plan CI-3, D8). |
|
cmdrun
Package cmdrun runs host commands (ip, nft, mkfs.ext4) behind a small interface so that callers can be tested with a fake.
|
Package cmdrun runs host commands (ip, nft, mkfs.ext4) behind a small interface so that callers can be tested with a fake. |
|
dnsfwd
Package dnsfwd is a small DNS forwarder for job sandboxes (stdlib only).
|
Package dnsfwd is a small DNS forwarder for job sandboxes (stdlib only). |
|
execstream
Package execstream is the framed protobuf stream between the host process of ermite-runner and the executor running inside a sandbox.
|
Package execstream is the framed protobuf stream between the host process of ermite-runner and the executor running inside a sandbox. |
|
executor
Package executor runs the steps of a GitHub Actions job inside a sandbox.
|
Package executor runs the steps of a GitHub Actions job inside a sandbox. |
|
externals
Package externals provides the tools that jobs expect to find outside the image, today the Node.js builds of actions/runner (node20, node24 and the alpine variants for job containers), so that a runner upgrade or a new Node.js version never needs an image rebuild.
|
Package externals provides the tools that jobs expect to find outside the image, today the Node.js builds of actions/runner (node20, node24 and the alpine variants for job containers), so that a runner upgrade or a new Node.js version never needs an image rebuild. |
|
guest
Package guest is the code that runs inside a sandbox: `ermite-runner init` (the guest PID 1) and `ermite-runner exec` (the executor).
|
Package guest is the code that runs inside a sandbox: `ermite-runner init` (the guest PID 1) and `ermite-runner exec` (the executor). |
|
host
Package host is the host side of ermite-runner: it registers the runner with ermite, fetches jobs, runs each one in a sandbox through the executor, and reports logs, steps and the result with the job token.
|
Package host is the host side of ermite-runner: it registers the runner with ermite, fetches jobs, runs each one in a sandbox through the executor, and reports logs, steps and the result with the job token. |
|
host/hosttest
Package hosttest is an in-memory RunnerService for tests that run the real host loop against a real sandbox.
|
Package hosttest is an in-memory RunnerService for tests that run the real host loop against a real sandbox. |
|
netpolicy
Package netpolicy generates and applies the nftables policy of job sandboxes.
|
Package netpolicy generates and applies the nftables policy of job sandboxes. |
|
resultssvc
Package resultssvc is the GitHub Actions results service of the runner, the part of it that artifacts v4 use (plan CI-4 C).
|
Package resultssvc is the GitHub Actions results service of the runner, the part of it that artifacts v4 use (plan CI-4 C). |
|
sandbox
Package sandbox defines the isolation boundary of a CI job: one Sandbox per job, either a Firecracker micro-VM (package vm) or a container with its own Docker daemon (package container).
|
Package sandbox defines the isolation boundary of a CI job: one Sandbox per job, either a Firecracker micro-VM (package vm) or a container with its own Docker daemon (package container). |
|
sandbox/container
Package container is the container sandbox, for hosts without KVM: one container per job with its own Docker daemon inside (the sysbox runtime when the daemon lists it, else a privileged container), on its own bridge network and with its own scratch disk.
|
Package container is the container sandbox, for hosts without KVM: one container per job with its own Docker daemon inside (the sysbox runtime when the daemon lists it, else a privileged container), on its own bridge network and with its own scratch disk. |
|
sandbox/disk
Package disk creates the per-job scratch disks (sparse ext4 files) and, for the container mode, loop-mounts them.
|
Package disk creates the per-job scratch disks (sparse ext4 files) and, for the container mode, loop-mounts them. |
|
sandbox/drivers
Package drivers wires the sandbox drivers into sandbox.Select.
|
Package drivers wires the sandbox drivers into sandbox.Select. |
|
sandbox/netsetup
Package netsetup is the host-side network plumbing shared by both sandbox drivers: the nftables policy (package netpolicy), the DNS forwarder (package dnsfwd) and IPv4 forwarding.
|
Package netsetup is the host-side network plumbing shared by both sandbox drivers: the nftables policy (package netpolicy), the DNS forwarder (package dnsfwd) and IPv4 forwarding. |
|
sandbox/sandboxtest
Package sandboxtest has helpers shared by the tests of the sandbox drivers.
|
Package sandboxtest has helpers shared by the tests of the sandbox drivers. |
|
sandbox/vm
Package vm is the micro-VM sandbox: one Firecracker VM per job.
|
Package vm is the micro-VM sandbox: one Firecracker VM per job. |
|
tcprelay
Package tcprelay forwards TCP connections accepted on a sandbox's gateway address to one fixed target.
|
Package tcprelay forwards TCP connections accepted on a sandbox's gateway address to one fixed target. |
|
urlorigin
Package urlorigin gives the one canonical form of the origin of an http(s) URL that the host and the executor both compare: the archive token of an action goes only to the origin the host named, so the two sides must agree on what "the same origin" means, whatever the spelling of the URL.
|
Package urlorigin gives the one canonical form of the origin of an http(s) URL that the host and the executor both compare: the archive token of an action goes only to the origin the host named, so the two sides must agree on what "the same origin" means, whatever the spelling of the URL. |
Click to show internal directories.
Click to hide internal directories.