Runner limits

This page lists the limits of Nerudo CI runners and the jobs that they run.

Job machine resources

Resourceapplepodman, dockerkubernetes
CPU--cpus, 1 to 64, default 4--cpus, 1 to 64, default 4--cpus, as requests and limits
Memory--memory, default 4G--memory, default 4G, no swap--memory, as requests and limits
ProcessesNo limit--pids, default 4096The node's limit
Workspace diskNo limit: the host's free diskNo limit: the host's free disk--disk, as ephemeral storage
/tmpMemory file systemMemory file systemCounts against --disk
Root filesystemRead-onlyRead-onlyRead-only
UserThe image's userThe runner's userUID 1000, or --run-as
NetworkOutboundThe engine's default networkInternet only, if the network plugin enforces the shipped policy

Sizes use binary units: 4G is 4 GiB, and 512M is 512 MiB.

The runner does not share caches between jobs. Each job starts with an empty workspace. Use a pre-built image to make jobs faster.

Time

LimitValue
Job time, from the runner (--timeout)Default 1800 seconds, maximum 21600 seconds. It includes the machine start.
Job time, from the repository ([ci] timeout)Default 1800 seconds, maximum 21600 seconds
Step time (timeout-minutes)Shorter than the job time
Machine start120 seconds on apple, 600 seconds on the other drivers. Change it with --start-timeout.
Runner offlineNo call for 60 seconds
Job without reportsSent again after 10 minutes, then failed as ci_crashed
Job not taken by a runnerAfter 10 minutes, the landing waits as ci_no_runner and tries again
Registration token1 hour

Logs and records

LimitValue
Log kept for each jobThe newest 2 MB
Log lineCut at 4 KiB. The runner splits lines at 8192 characters.
Log buffer on the runner4 MiB or 8192 lines not yet sent. Later output is omitted, and the log says so.
Failed step's log in the change's reasonThe last 28 KiB
Jobs kept for each repositoryThe newest 500
Job definition1.5 MB
Steps for each job256
Runner labels32, each up to 255 bytes
Secrets for each job64, each up to 64 KiB
Machine samples on the job page120, over the whole job

The runner reads the job machine's memory and CPU every 5 seconds.

Workflow features

A runner runs the run: steps of one job. It supports name, id, working-directory, shell (bash or sh), env, defaults.run, if with success(), failure() and always(), and timeout-minutes.

These features are not available:

  • uses: actions, which include actions/checkout. Check out with git in a run: step.
  • Matrices, reusable workflows, services, and container jobs.
  • Artifacts, caches, and output files such as GITHUB_OUTPUT and GITHUB_ENV.
  • Expressions in step scripts. Put values in env, then use shell variables.
  • Environment values with line breaks.
  • cancelled() steps.

A workflow with an unsupported key fails before its first step.

One job at a time

Each runner runs one job at a time. For more parallel jobs, register more runners. On Kubernetes, use one Deployment for each runner. See Run more than one job at a time.

See also CI runners and Troubleshoot a runner.