CI runner load is bursty: pipelines can spike CPU, memory and disk. Docker builds, tests, dependency installation and artifacts have different resource profiles. Parallel jobs must be included directly in capacity planning.
It depends on per-job CPU use and concurrent pipelines. Two heavy builds can consume more than eight light lint jobs. GitLab Docker executor provides containerized isolated build environments; Gitea runners can also use Docker for containerized jobs.
Calculate runner capacity from job type, not only pipeline count.
The runner receives the job, creates an isolated environment, pulls dependencies/cache, runs build/tests and uploads artifacts.
Docker-in-Docker or docker.sock access can carry high privilege. Separate ephemeral runners can be safer for public or fork-originated jobs.
Measure host-level peaks during heavy jobs.
uptimefree -hiostat -xz 1 5docker stats --no-streamdocker system dfdf -hOne node is simpler but creates one failure domain. Multiple runners add concurrency and isolation but increase cache and operational complexity.
Small team
Medium/high pipelines
Untrusted/peak jobs
It runs CI jobs inside Docker images as isolated build environments.
Docker is needed for container jobs, while host execution is also possible.
Low-latency storage can reduce build time in dependency- and Docker-layer-cache-heavy pipelines.
Share daily pipelines, concurrent jobs, Docker builds and artifact size; we can size runner CPU/memory/NVMe.