잡의 러너(runner) 선택하기
잡의 러너(runner) 선택하기
워크플로의 잡을 처리할 머신 유형을 정의할 수 있어요. GitHub 호스팅 러너, 셀프 호스팅 러너, 더 큰 러너(larger runner) 중에서 목적에 맞게 고르면 돼요.
출처: 문서
본문
워크플로에서 잡을 처리할 머신 유형을 정의합니다.
개요
jobs.<job_id>.runs-on을 사용해서 잡을 실행할 머신 유형을 정의합니다.
-
대상 머신은 GitHub 호스팅 러너, 더 큰 러너, 또는 셀프 호스팅 러너 중 하나일 수 있습니다.
-
러너에 할당된 라벨, 그룹 구성원 자격, 또는 이 둘의 조합을 기준으로 러너를 대상으로 지정할 수 있습니다.
-
runs-on은 다음 중 하나로 제공할 수 있습니다:- 단일 문자열
- 문자열을 포함하는 단일 변수
- 문자열, 문자열을 포함하는 변수, 또는 둘의 조합의 배열
group또는labels키를 사용하는key: value쌍
-
문자열이나 변수의 배열을 지정하면 워크플로는 지정된 모든
runs-on값과 일치하는 아무 러너에서 실행됩니다. 예를 들어 여기서 잡은linux,x64,gpu라벨을 가진 셀프 호스팅 러너에서만 실행됩니다:runs-on: [self-hosted, linux, x64, gpu]자세한 내용은 Choosing self-hosted runners를 참고하세요.
-
배열에서 문자열과 변수를 섞을 수 있습니다. 예를 들어:
on: workflow_dispatch: inputs: chosen-os: required: true type: choice options: - Ubuntu - macOS jobs: test: runs-on: [self-hosted, "${{ inputs.chosen-os }}"] steps: - run: echo Hello world! -
여러 머신에서 워크플로를 실행하려면
jobs.<job_id>.strategy를 사용하세요.
[!NOTE]
self-hosted같은 단순 문자열에는 따옴표가 필요하지 않지만,"${{ inputs.chosen-os }}"같은 표현식에는 따옴표가 필요합니다.
GitHub 호스팅 러너 선택하기
GitHub 호스팅 러너를 사용하면 각 잡은 runs-on이 지정한 러너 이미지의 새 인스턴스에서 실행됩니다.
GitHub 호스팅 러너를 사용할 때 runs-on의 값은 워크플로 라벨이거나 러너 그룹의 이름입니다. 표준 GitHub 호스팅 러너의 라벨은 다음 표에 나와 있습니다.
자세한 내용은 GitHub-hosted runners를 참고하세요.
공개 저장소용 표준 GitHub 호스팅 러너
공개 저장소의 경우 아래 표의 워크플로 라벨을 사용하는 잡은 해당 사양으로 실행됩니다. 단일 CPU 러너를 제외하고 각 GitHub 호스팅 러너는 GitHub가 호스팅하는 새로운 가상 머신(VM)입니다. 단일 CPU 러너는 공유 VM의 컨테이너에서 호스팅됩니다—GitHub-hosted runners reference를 참고하세요. 표준 GitHub 호스팅 러너의 사용은 공개 저장소에서 무료이며 무제한입니다.
| Virtual machine / container | Processor (CPU) | Memory (RAM) | Storage (SSD) | Architecture | Workflow label |
|---|---|---|---|---|---|
| Linux | 1 | 5 GB | 14 GB | x64 |
ubuntu-slim
|
| Linux | 4 | 16 GB | 14 GB | x64 |
ubuntu-latest,
ubuntu-24.04,
ubuntu-22.04,
ubuntu-26.04
|
| Windows | 4 | 16 GB | 14 GB | x64 |
windows-latest,
windows-2025,
windows-2025-vs2026,
windows-2022
|
| Linux | 4 | 16 GB | 14 GB | arm64 |
ubuntu-24.04-arm,
ubuntu-22.04-arm,
ubuntu-26.04-arm
|
| Windows | 4 | 16 GB | 14 GB | arm64 |
windows-11-arm,
windows-11-vs2026-arm
|
| macOS | 4 | 14 GB | 14 GB | Intel |
macos-15-intel,
macos-26-intel
|
| macOS | 3 (M1) | 7 GB | 14 GB | arm64 |
macos-latest,
macos-14,
macos-15,
macos-26,
xcode-27 (Public preview)
|
비공개 저장소용 표준 GitHub 호스팅 러너
비공개 저장소의 경우 아래 표의 워크플로 라벨을 사용하는 잡은 해당 사양의 가상 머신에서 실행됩니다. 이 러너들은 GitHub 계정의 무료 분(allowance)을 사용하며, 이후 분당 요금으로 청구됩니다. Actions runner pricing을 참고하세요.
| Virtual Machine | Processor (CPU) | Memory (RAM) | Storage (SSD) | Architecture | Workflow label |
|---|---|---|---|---|---|
| Linux | 1 | 5 GB | 14 GB | x64 |
ubuntu-slim
|
| Linux | 2 | 8 GB | 14 GB | x64 |
ubuntu-latest,
ubuntu-24.04,
ubuntu-22.04,
ubuntu-26.04
|
| Windows | 2 | 8 GB | 14 GB | x64 |
windows-latest,
windows-2025,
windows-2022
|
| Linux | 2 | 8 GB | 14 GB | arm64 |
ubuntu-24.04-arm,
ubuntu-22.04-arm,
ubuntu-26.04-arm
|
| Windows | 2 | 8 GB | 14 GB | arm64 |
windows-11-arm,
windows-11-vs2026-arm
|
| macOS | 4 | 14 GB | 14 GB | Intel |
macos-15-intel,
macos-26-intel
|
| macOS | 3 (M1) | 7 GB | 14 GB | arm64 |
macos-latest,
macos-14,
macos-15,
macos-26,
xcode-27 (Public preview)
|
표준 GitHub 호스팅 러너 외에도 GitHub는 GitHub Team과 GitHub Enterprise Cloud 플랜 고객에게 고급 기능을 갖춘 관리형 가상 머신 범위를 제공합니다—예를 들어 더 많은 코어와 디스크 공간, GPU 지원 머신, ARM 지원 머신 등입니다. 자세한 내용은 Larger runners를 참고하세요.
[!NOTE]
-latest러너 이미지는 GitHub가 제공하는 최신 안정 이미지이며, 운영 체제 공급업체가 제공하는 최신 버전의 운영 체제가 아닐 수 있습니다.
[!WARNING] 베타(Beta) 및 더 이상 사용되지 않는(Deprecated) 이미지는 "있는 그대로(as-is)", "모든 결함 포함(with all faults)", "제공 가능한 대로(as available)" 제공되며 서비스 수준 계약과 보증에서 제외됩니다. 베타 이미지는 고객 지원의 적용을 받지 않을 수 있습니다.
예시: 운영 체제 지정하기
runs-on: ubuntu-latest
자세한 내용은 GitHub-hosted runners를 참고하세요.
셀프 호스팅 러너 선택하기
잡에 셀프 호스팅 러너를 지정하려면 워크플로 파일의 runs-on을 셀프 호스팅 러너 라벨로 구성합니다.
셀프 호스팅 러너는 self-hosted 라벨을 가질 수 있습니다. 셀프 호스팅 러너를 설정할 때 기본적으로 self-hosted 라벨이 포함됩니다. --no-default-labels 플래그를 전달하면 self-hosted 라벨이 적용되지 않게 할 수 있습니다. 라벨은 운영 체제나 아키텍처 같은 러너 대상 지정 옵션을 만드는 데 사용할 수 있습니다. self-hosted(첫 번째로 나열해야 함)로 시작하고 필요에 따라 추가 라벨을 포함하는 라벨 배열을 제공하는 것을 권장합니다. 라벨 배열을 지정하면 잡은 지정한 모든 라벨을 가진 러너에 대기열에 배치됩니다.
[!NOTE] Actions Runner Controller는
self-hosted라벨을 지원하지 않습니다.
예시: 러너 선택에 라벨 사용하기
runs-on: [self-hosted, linux]
자세한 내용은 Self-hosted runners와 Using self-hosted runners in a workflow를 참고하세요.
그룹에서 러너 선택하기
runs-on을 사용해서 러너 그룹을 대상으로 지정할 수 있으므로, 잡은 해당 그룹의 구성원인 아무 러너에서 실행됩니다. 더 세밀한 제어를 위해 러너 그룹과 라벨을 결합할 수도 있습니다.
러너 그룹에는 더 큰 러너나 셀프 호스팅 러너만 구성원으로 가질 수 있습니다.
예시: 그룹을 사용해서 잡 실행 위치 제어하기
이 예시에서 러너는 build-runners라는 그룹에 추가되었습니다. runs-on 키는 잡을 build-runners 그룹의 사용 가능한 아무 러너로 보냅니다:
name: learn-github-actions
on: [push]
jobs:
check-bats-version:
runs-on:
group: build-runners
steps:
- uses: actions/checkout@v6
- uses: actions/setup-node@v7
with:
node-version: '14'
- run: npm install -g bats
- run: bats -v
예시: 그룹과 라벨 결합하기
그룹과 라벨을 결합하면 러너는 두 요구 사항을 모두 충족해야 잡을 실행할 자격이 됩니다.
이 예시에서 runs-on 키는 group과 labels를 결합해서, 그룹 내에서 일치하는 라벨도 가진 사용 가능한 아무 러너로 잡을 라우팅합니다:
name: learn-github-actions
on: [push]
jobs:
check-bats-version:
runs-on:
group: ubuntu-runners
labels: ubuntu-24.04-16core
steps:
- uses: actions/checkout@v6
- uses: actions/setup-node@v7
with:
node-version: '14'
- run: npm install -g bats
- run: bats -v