Skip to content

Commit 8fda21d

Browse files
authored
Showing feature comparison between self-hosted runners (#9325)
* Adding runner feature comparison information * Refining matrix info * Fixing formatting * Implementing suggestions from reviewer * Adding more info/links * Updating PR according to feedback * Fixing capitalization
1 parent 41c72ee commit 8fda21d

File tree

2 files changed

+121
-0
lines changed

2 files changed

+121
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
---
2+
contentTags:
3+
platform:
4+
- Cloud
5+
- Server v4+
6+
---
7+
= Self-hosted runner feature comparison
8+
:description: A comparison table of the features available for CircleCI runners.
9+
:page-layout: classic-docs
10+
:page-liquid:
11+
:icons: font
12+
:experimental:
13+
14+
This page offers a comparison of the features available for CircleCI machine runner vs. CircleCI container runner.
15+
16+
[#feature-comparison-matrix]
17+
== Comparison matrix
18+
19+
[.table.table-striped]
20+
[cols=4*, options="header", stripes=even]
21+
|===
22+
|Feature
23+
|Description
24+
|Machine Runner
25+
|Container Runner
26+
27+
|*Environment*
28+
|Where jobs run and how resources are managed
29+
|Full VM/bare metal
30+
|Kubernetes Pods
31+
32+
|*Configuration File*
33+
|Primary file for runner setup
34+
|YAML config (location depends on OS)
35+
|Helm `values.yaml`
36+
37+
|*Resource Control*
38+
|How compute resources are allocated
39+
|System level
40+
|Kubernetes limits
41+
42+
|*Architecture Support*
43+
|CPU architectures available for builds
44+
|xref:runner-overview#available-self-hosted-runner-platforms[Depends on OS]
45+
|AMD64/ARM64 with `nodeSelector`
46+
47+
|*Job Isolation*
48+
|How jobs are kept separate
49+
|VM-level
50+
|Container-level
51+
52+
|*Scaling*
53+
|How runner capacity scales with demand
54+
|xref:runner-scaling#scaling-data[Manual/custom]
55+
|Kubernetes-based auto-scaling
56+
57+
|*Service Containers*
58+
|Support for additional services in build
59+
|Not supported
60+
|Extensive support with resource controls
61+
62+
|*Execution Modes*
63+
|How runner handles job execution
64+
|`single-task` or `continuous`
65+
|Pod-based execution
66+
67+
|*Docker Support*
68+
|How Docker-in-Docker is handled
69+
|Native OS support
70+
|Possible xref:container-runner#building-container-images[with third-party tools]
71+
72+
|*Resource Cleanup*
73+
|How build environments are cleaned after jobs
74+
|Working directory cleanup
75+
|Container lifecycle
76+
|===
77+
78+
79+
[#feature-highlights]
80+
== Feature Highlights
81+
82+
*Machine Runner*
83+
84+
* Latest generation of machine-based runners.
85+
* Full access to underlying operating system.
86+
* Ideal for workflows requiring VM-level isolation.
87+
* Consistent xref:variables#built-in-environment-variables[environment variables] with `CIRCLECI_RUNNER_*` prefix.
88+
* Supports SSH connectivity for debugging.
89+
90+
*Container Runner*
91+
92+
* Kubernetes-native solution for container-based workflows.
93+
* Fine-grained resource allocation and constraints.
94+
* Supports service container configurations with pattern matching.
95+
* Advanced node selection via Kubernetes annotations.
96+
* Custom security contexts and volume mounting.
97+
* Support for spot instances via tolerations.
98+
* Configurable resource limits for primary and service containers.
99+
* Supports SSH connectivity for debugging - xref:container-runner-installation#enable-rerun-job-with-ssh[Open preview].
100+
101+
[#key-differences]
102+
== Key differences
103+
104+
*Machine runner* offers full VM isolation with the newest
105+
configuration patterns and improved controls.
106+
107+
*Container runner* leverages Kubernetes for:
108+
109+
* Container-based isolation.
110+
* Better scaling capabilities.
111+
* Advanced resource management.
112+
* Multiple architecture support.
113+
114+
[#choose-a-runner]
115+
== When to choose each runner
116+
117+
*Machine runner*: Choose for full system access, custom system dependencies, or when Kubernetes is not available.
118+
119+
*Container runner*: Best for cloud-native applications, teams using Kubernetes, and workloads that benefit from container orchestration.

jekyll/_data/sidenav.yml

+2
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,8 @@ en:
266266
link: runner-overview
267267
- name: Self-hosted runner concepts
268268
link: runner-concepts
269+
- name: Runner feature comparison matrix
270+
link: runner-feature-comparison-matrix
269271
- name: Container runner
270272
children:
271273
- name: Container runner installation

0 commit comments

Comments
 (0)