GitHub 호스팅 실행기 개요
실행기는 GitHub Actions 워크플로에서 작업을 실행하는 머신입니다. 예를 들어 실행기는 리포지토리를 로컬로 복제하고, 테스트 소프트웨어를 설치한 다음, 코드를 평가하는 명령을 실행할 수 있습니다.
GitHub는 작업을 실행하는 데 사용할 수 있는 실행기를 제공하거나 사용자 고유의 실행기를 호스트할 수 있습니다. 각 GitHub 호스팅 실행기는 실행기 애플리케이션 및 기타 도구가 미리 설치된 GitHub에서 호스트하는 새 VM(가상 머신)이며 Ubuntu Linux, Windows 또는 macOS 운영 체제에서 사용할 수 있습니다. GitHub 호스팅 실행기를 사용하면 머신 유지 관리 및 업그레이드가 자동으로 처리됩니다.
표준 GitHub 호스트형 실행기 옵션 중 하나를 선택하거나 GitHub Team 또는 GitHub Enterprise Cloud 플랜에 있는 경우 더 많은 코어가 있는 실행기 또는 GPU 또는 ARM 프로세서로 구동되는 실행기를 프로비전할 수 있습니다. 이러한 컴퓨터를 "더 큰 실행기"라고 합니다. 자세한 내용은 "대규모 실행기 정보"을(를) 참조하세요.
GitHub호스팅 실행기를 사용하려면 초당 70킬로비트 이상의 업로드 및 다운로드 속도로 네트워크에 액세스해야 합니다.
GitHub 호스팅 실행기 사용
GitHub 호스팅 실행기를 사용하려면 작업을 만들고 runs-on
을 이용해 ubuntu-latest
, windows-latest
, macos-latest
등과 같이 작업을 처리할 실행기 유형을 지정합니다. 실행기 유형의 전체 목록은 "GitHub 호스팅 실행기 정보"을(를) 참조하세요. 리포지토리에 대한 repo: write
액세스 권한이 있는 경우 리포지토리의 워크플로에서 사용할 수 있는 실행기 목록을 볼 수 있습니다. 자세한 내용은 "리포지토리에 사용 가능한 실행기 보기"를 참조하세요.
작업이 시작되면 GitHub가 해당 작업에 대한 새 VM을 자동으로 프로비저닝합니다. 모든 작업 단계는 VM에서 실행되며 실행기의 파일 체계를 사용하는 정보를 공유합니다. VM 또는 Docker 컨테이너에서 직접 워크플로를 실행할 수 있습니다. 작업이 완료되면 VM이 자동으로 서비스 해제됩니다.
다음 다이어그램은 하나의 워크플로에 속한 두 개의 작업이 어떤 방식을 통해 두 개의 서로 다른 GitHub 호스팅 실행기를 통해 실행되는지를 보여 줍니다.
예시된 다음 워크플로에는 Run-npm-on-Ubuntu
, Run-PSScriptAnalyzer-on-Windows
두 개의 작업이 있습니다. 이 워크플로가 트리거되면 GitHub는 각 작업에 대해 새 가상 머신을 프로비저닝합니다.
- 이름이
Run-npm-on-Ubuntu
인 작업은 작업의runs-on:
이ubuntu-latest
를 지정하므로 Linux VM에서 실행됩니다. - 이름이
Run-PSScriptAnalyzer-on-Windows
인 작업은 작업의runs-on:
가windows-latest
를 지정하므로 Windows VM에서 실행됩니다.
name: Run commands on different operating systems on: push: branches: [ main ] pull_request: branches: [ main ] jobs: Run-npm-on-Ubuntu: name: Run npm on Ubuntu runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: '14' - run: npm help Run-PSScriptAnalyzer-on-Windows: name: Run PSScriptAnalyzer on Windows runs-on: windows-latest steps: - uses: actions/checkout@v4 - name: Install PSScriptAnalyzer module shell: pwsh run: | Set-PSRepository PSGallery -InstallationPolicy Trusted Install-Module PSScriptAnalyzer -ErrorAction Stop - name: Get list of rules shell: pwsh run: | Get-ScriptAnalyzerRule
name: Run commands on different operating systems
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
Run-npm-on-Ubuntu:
name: Run npm on Ubuntu
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '14'
- run: npm help
Run-PSScriptAnalyzer-on-Windows:
name: Run PSScriptAnalyzer on Windows
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- name: Install PSScriptAnalyzer module
shell: pwsh
run: |
Set-PSRepository PSGallery -InstallationPolicy Trusted
Install-Module PSScriptAnalyzer -ErrorAction Stop
- name: Get list of rules
shell: pwsh
run: |
Get-ScriptAnalyzerRule
작업이 실행되는 동안 GitHub UI에서 로그 및 출력을 볼 수 있습니다.
GitHub Actions 실행기 애플리케이션이 오픈 소스입니다. 실행기 리포지토리에서 기여하고 문제를 제출할 수 있습니다.
리포지토리에 사용 가능한 실행기 보기
리포지토리에 repo: write
액세스 권한이 있는 경우 리포지토리에서 사용할 수 있는 실행기 목록을 볼 수 있습니다.
-
GitHub에서 리포지토리의 기본 페이지로 이동합니다.
-
리포지토리 이름 아래에서 작업을 클릭합니다.
-
왼쪽 사이드바의 "관리" 섹션에서 실행기를 클릭합니다.
-
리포지토리에 사용할 수 있는 GitHub 호스팅 실행기 목록을 검토합니다.
-
실행기 레이블을 복사사하여 워크플로에서 사용하려면, 실행기 오른쪽에 있는 을 클릭한 다음 레이블 복사를 클릭합니다.
참고: 엔터프라이즈와 조직 소유자는 이 페이지에서 새 실행기를 만들 수 있습니다. 새 실행기를 만들려면 실행기 목록의 오른쪽 상단에 있는 새 실행기를 클릭하여 리포지토리에 실행기를 추가합니다.
자세한 내용은 "대형 실행기 관리하기" 및 "자체 호스트형 실행기 추가"을(를) 참조하세요.
지원되는 실행기 및 하드웨어 리소스
GitHub 호스트형 실행기는 퍼블릭 및 프라이빗 리포지토리 모두에서 사용할 수 있습니다.
GitHub 호스트형 Linux 실행기는 Android SDK Tools에 대한 하드웨어 가속을 지원하므로 Android 테스트 실행 속도가 훨씬 빨라지고 소모 시간(분)을 줄여줍니다. Android 하드웨어 가속에 대한 자세한 내용은 Android 개발자 설명서 내의 Android Emulator에 대한 하드웨어 가속 구성을 참조하세요.
Note
-latest
실행기 이미지는 GitHub에서 제공하는 안정적인 최신 이미지이며 운영 체제 공급업체에서 사용할 수 있는 운영 체제의 최신 버전이 아닐 수도 있습니다.
경고: 베타 및 사용되지 않는 이미지는 “있는 그대로” “모든 오류를 포함하여” “사용 가능한 상태로” 제공되며, 서비스 수준 계약 및 보증에서 제외됩니다. 베타 이미지는 고객 지원에서 다루지 않을 수 있습니다.
퍼블릭 리포지토리의 표준 GitHub 호스팅 실행기
퍼블릭 리포지토리의 경우 아래 표에 표시된 워크플로 레이블을 사용하는 작업은 관련 사양을 갖춘 가상 머신에서 실행됩니다. 퍼블릭 리포지토리에서 이러한 실행기를 사용하는 것은 무료이며 무제한입니다.
Virtual Machine | 프로세서(CPU) | 메모리(RAM) | 스토리지(SSD) | 워크플로 레이블 |
---|---|---|---|---|
Linux | 4 | 16GB | 14 GB |
ubuntu-latest , ubuntu-24.04 , ubuntu-22.04 , ubuntu-20.04
|
Windows | 4 | 16GB | 14 GB |
windows-latest , windows-2022 , windows-2019
|
macOS | 3 | 14 GB | 14 GB |
macos-12
|
macOS | 4 | 14 GB | 14 GB |
macos-13
|
macOS | 3 (M1) | 7 GB | 14 GB |
macos-latest , macos-14 , macos-15 [공개 미리 보기] |
프라이빗 리포지토리에 대한 표준 GitHub 호스팅 실행기.
프라이빗 리포지토리의 경우 아래 표에 표시된 워크플로 레이블을 사용하는 작업은 관련 사양을 갖춘 가상 머신에서 실행됩니다. 이러한 실행기는 GitHub 계정의 무료 사용 가능 시간(분)을 사용한 다음 분당 요금이 청구됩니다. 자세한 내용은 "GitHub Actions 요금 청구 정보"을(를) 참조하세요.
Virtual Machine | 프로세서(CPU) | 메모리(RAM) | 스토리지(SSD) | 워크플로 레이블 |
---|---|---|---|---|
Linux | 2 | 7 GB | 14 GB |
ubuntu-latest , ubuntu-24.04 , ubuntu-22.04 , ubuntu-20.04
|
Windows | 2 | 7 GB | 14 GB |
windows-latest , windows-2022 , windows-2019
|
macOS | 3 | 14 GB | 14 GB |
macos-12
|
macOS | 4 | 14 GB | 14 GB |
macos-13
|
macOS | 3 (M1) | 7 GB | 14 GB |
macos-latest , macos-14 , macos-15 [공개 미리 보기] |
워크플로 로그는 작업을 실행하는 데 사용되는 실행기를 나열합니다. 자세한 내용은 "워크플로 실행 기록 보기"을(를) 참조하세요.
arm64 macOS 실행기 제한 사항
- GitHub에서 제공하는 모든 작업은 arm64 GitHub 호스트된 실행기와 호환됩니다. 그러나 커뮤니티 작업은 arm64와 호환되지 않을 수 있으며 런타임에 수동으로 설치해야 합니다.
- Apple의 가상화 프레임워크 제한으로 인해 MPS(Nested-virtualization and Metal Performance Shaders)는 지원되지 않습니다.
- Azure 개인 네트워킹 및 정적 IP 할당과 같은 네트워킹 기능은 현재 macOS 대규모 실행기에서 사용할 수 없습니다.
- arm64 macOS 실행기에는 Apple이 이 기능을 지원하지 않기 때문에 할당된 정적 UUID/UDID가 없습니다. 그러나 Intel MacOS 실행기에서는 정적 UDID, 특히
4203018E-580F-C1B5-9525-B745CECA79EB
가 할당됩니다. 빌드를 테스트하려는 동일한 호스트에서 빌드 및 서명하는 경우 개발 프로비저닝 프로필로 서명할 수 있습니다. 정적 UDID가 필요한 경우 Intel 실행기를 사용하고 해당 UDID를 Apple 개발자 계정에 추가할 수 있습니다.
대형 러너
GitHub Team 및 GitHub Enterprise Cloud 플랜을 사용하는 고객은 표준 GitHub 호스트형 실행기보다 더 많은 리소스를 제공하는 다양한 관리형 가상 머신 중에서 선택할 수 있습니다. 이러한 컴퓨터를 "더 큰 실행기"라고 합니다. 다음과 같은 고급 기능을 제공합니다.
- 더 많은 RAM, CPU 및 디스크 공간
- 고정 IP 주소
- Azure 개인 네트워킹
- 주자를 그룹화할 수 있는 기능
- 동시 워크플로를 지원하기 위한 자동 크기 조정
- GPU 지원 및 ARM 지원 실행기
이러한 대형 러너는 GitHub에서 호스팅되며 실행기 애플리케이션 및 기타 도구가 미리 설치되어 있습니다.
자세한 내용은 "더 큰 실행기 사용"을(를) 참조하세요.
지원되는 소프트웨어
GitHub 호스팅 실행기에 포함된 소프트웨어 도구는 매주 업데이트됩니다. 업데이트 프로세스는 며칠이 걸리며 main
분기에 사전 설치된 소프트웨어 목록은 전체 배포가 종료된 후 업데이트됩니다.
사전 설치된 소프트웨어
워크플로 로그에는 정확한 실행기에서 사전 설치된 도구에 대한 링크가 포함됩니다. 워크플로 로그에서 이 정보를 찾으려면 Set up job
섹션을 확장합니다. 해당 섹션에서 Runner Image
섹션을 확장합니다. Included Software
뒤의 링크는 워크플로를 실행한 실행기에 사전 설치된 도구에 대해 설명합니다.
자세한 내용은 "워크플로 실행 기록 보기"을(를) 참조하세요. 각 실행기 운영 체제에 대한 포함된 도구의 전체 목록은 실행기 이미지 리포지토리의 사용 가능한 이미지 설명서를 참조하세요.
GitHub 호스팅 실행기는 위의 참조에 나열된 패키지 외에도 운영 체제의 기본 제공 도구를 포함합니다. 예를 들어 Ubuntu 및 macOS 실행기는 grep
, find
, which
등 여러 기본 도구를 포함합니다.
Windows 및 Ubuntu 실행기 이미지의 각 빌드에 대한 SBOM(소프트웨어 자료 청구서)을 볼 수도 있습니다. 자세한 정보는 "GitHub Actions에 대한 보안 강화"을(를) 참조하세요.
사전 설치된 소프트웨어 사용
실행기에 설치된 소프트웨어와 상호 작용하는 작업을 사용하는 것이 좋습니다. 이 접근 방식에는 몇 가지 이점이 있습니다.
- 일반적으로 작업에서는 버전 선택, 인수 및 매개 변수 전달 기능과 같은 보다 유연한 기능을 제공합니다.
- 이를 통해 소프트웨어 업데이트와 관계없이 워크플로에 사용되는 도구 버전이 동일하게 유지됩니다.
요청하려는 도구가 있는 경우 actions/runner-images에서 문제를 여세요. 이 리포지토리에는 실행기에서 모든 주요 소프트웨어 업데이트에 대한 공지 사항도 포함되어 있습니다.
추가 소프트웨어 설치
GitHub 호스팅 실행기에 추가 소프트웨어를 설치할 수 있습니다. 자세한 내용은 "GitHub 호스팅 실행기 사용자 지정"을(를) 참조하세요.
GitHub 호스팅 실행기용 클라우드 호스트
GitHub는 GitHub Actions 실행기 애플리케이션이 설치된 Microsoft Azure의 가상 머신에서 Linux 및 Windows 실행기를 호스트합니다. GitHub 호스팅 실행기 애플리케이션은 Azure Pipelines 에이전트의 포크입니다. 모든 Azure 가상 머신에 대해 인바운드 ICMP 패킷이 차단되므로 ping 또는 traceroute 명령이 작동하지 않을 수 있습니다. GitHub는 Azure 데이터 센터에서 macOS 실행기를 호스팅합니다.
Linux 및 Windows 실행기의 경우 GitHub은(는) Dadsv5-series
가상 머신을 사용합니다. 자세한 내용은 Microsoft Azure 설명서에서 Dasv5 및 Dadsv5-series를 참조하세요.
GPU 실행기는 NCasT4_v3-series
가상 머신을 사용합니다. 자세한 내용은 Microsoft Azure 설명서에서 NCasT4_v3-series를 참조하세요.
워크플로 연속성
GitHub Actions 서비스를 일시적으로 사용할 수 없는 경우 트리거된 후 30분 이내에 큐에 대기하지 않으면 워크플로 실행이 삭제됩니다. 예를 들어 워크플로가 트리거되고 GitHub Actions 서비스를 31분 이상 사용할 수 없는 경우 워크플로 실행이 처리되지 않습니다.
또한 워크플로 실행이 성공적으로 큐에 대기되었지만 GitHub 호스팅 실행기에서 45분 이내에 처리되지 않은 경우 대기 중인 워크플로 실행이 삭제됩니다.
관리자 권한
Linux 및 macOS 가상 머신은 모두 암호 없는 sudo
를 사용하여 실행됩니다. 명령을 실행하거나 현재 사용자보다 더 많은 권한이 필요한 도구를 설치해야 하는 경우 암호를 제공하지 않고 sudo
를 사용할 수 있습니다. 자세한 내용은 “sudo 설명서”를 참조하세요.
Windows 가상 머신은 UAC(사용자 계정 컨트롤)를 사용하지 않고 관리자로 실행하도록 구성됩니다. 자세한 내용은 Windows 설명서의 “사용자 계정 컨트롤의 작동 방식”을 참조하세요.
IP 주소
GitHub Actions가 GitHub 호스팅 실행기에서 사용하는 IP 주소 범위 목록을 얻으려면 GitHub REST API를 사용할 수 있습니다. 자세한 내용은 GET /meta
엔드포인트의 응답에 있는 actions
키를 참조하세요. 자세한 내용은 "메타 데이터에 대한 REST API 엔드포인트"을(를) 참조하세요.
Windows 및 Ubuntu 실행기는 Azure에서 호스트되며 이후 Azure 데이터 센터와 동일한 IP 주소 범위를 갖습니다. macOS 실행기는 GitHub의 자체 macOS 클라우드에서 호스트됩니다.
GitHub 호스팅 실행기의 IP 주소 범위가 너무 많으므로 이를 내부 리소스에 대한 허용 목록으로 사용하지 않는 것이 좋습니다. 대신 고정 IP 주소 범위가 있는 더 큰 실행기 또는 자체 호스팅 실행기를 사용하는 것이 좋습니다. 자세한 내용은 "더 큰 실행기 사용" 또는 "자체 호스트형 실행기 정보"을(를) 참조하세요.
API에서 반환하는 GitHub Actions IP 주소 목록은 일주일에 한 번 업데이트됩니다.
GitHub에서 호스팅된 실행기 및 GitHub에 대한 통신 요구 사항
GitHub에서 호스팅된 실행기는 필수 통신 작업을 수행하려면 GitHub 소유 엔드포인트에 대한 연결을 설정해야 합니다. 또한 실행기는 작업 내에서 지정하거나 활용하는 추가 네트워크에 대한 액세스가 필요할 수 있습니다.
구성 내의 네트워크 간에 GitHub에서 호스팅된 실행기를 위한 적절한 통신을 보장하려면 다음 통신이 허용되는지 확인합니다.
Note
나열된 도메인 중 일부는 CNAME
레코드를 사용하여 구성됩니다. 일부 방화벽에서는 모든 CNAME
레코드에 대해 규칙을 재귀적으로 추가해야 할 수 있습니다. CNAME
레코드는 나중에 변경될 수 있으며 나열된 도메인만 일정하게 유지됩니다.
다음은 필수 작업에 필요합니다.
github.com api.github.com *.actions.githubusercontent.com
github.com
api.github.com
*.actions.githubusercontent.com
다음은 작업을 다운로드하는 데 필요합니다.
codeload.github.com ghcr.io *.actions.githubusercontent.com
codeload.github.com
ghcr.io
*.actions.githubusercontent.com
다음은 작업 요약, 로그, 워크플로 아티팩트 및 캐시 업로드/다운로드에 필요합니다.
results-receiver.actions.githubusercontent.com *.blob.core.windows.net
results-receiver.actions.githubusercontent.com
*.blob.core.windows.net
다음은 실행기 버전 업데이트에 필요합니다.
objects.githubusercontent.com objects-origin.githubusercontent.com github-releases.githubusercontent.com github-registry-files.githubusercontent.com
objects.githubusercontent.com
objects-origin.githubusercontent.com
github-releases.githubusercontent.com
github-registry-files.githubusercontent.com
다음은 OIDC 토큰을 검색하는 데 필요합니다.
*.actions.githubusercontent.com
*.actions.githubusercontent.com
패키지 또는 컨테이너를 GitHub 패키지에 다운로드하거나 게시하는 데 필요합니다.
*.pkg.github.com ghcr.io
*.pkg.github.com
ghcr.io
Git 대용량 파일 스토리지에 필요
github-cloud.githubusercontent.com github-cloud.s3.amazonaws.com
github-cloud.githubusercontent.com
github-cloud.s3.amazonaws.com
etc/hosts
파일
GitHub호스트형 실행기는 다양한 암호 화폐 마이닝 풀 및 악성 사이트에 대한 네트워크 액세스를 차단하는 etc/hosts
파일로 프로비전됩니다. MiningMadness.com 및 cpu-pool.com 같은 호스트는 심각한 보안 위험을 초래하지 않도록 localhost로 다시 지정됩니다.
파일 시스템
GitHub는 가상 머신의 특정 디렉터리에서 작업 및 셸 명령을 실행합니다. 가상 머신의 파일 경로는 고정적이지 않습니다. GitHub에서 제공하는 환경 변수를 사용하여 home
, workspace
및 workflow
디렉터리에 대한 파일 경로를 생성합니다.
디렉터리 | 환경 변수 | 설명 |
---|---|---|
home | HOME | 사용자 관련 데이터를 포함합니다. 예를 들어 이 디렉터리에는 로그인 시도의 자격 증명이 포함될 수 있습니다. |
workspace | GITHUB_WORKSPACE | 작업 및 셸 명령이 이 디렉터리에서 실행됩니다. 작업은 후속 작업이 액세스할 수 있는 이 디렉터리의 콘텐츠를 수정할 수 있습니다. |
workflow/event.json | GITHUB_EVENT_PATH | 워크플로를 트리거한 웹후크 이벤트의 POST 페이로드입니다. GitHub는 작업 간에 파일 콘텐츠를 격리하기 위해 작업을 실행할 때마다 이를 다시 작성합니다. |
각 워크플로에 대해 GitHub가 만드는 환경 변수 목록은 "변수에 정보 저장"을(를) 참조하세요.
Docker 컨테이너 파일 시스템
Docker 컨테이너에서 실행되는 작업에는 /github
경로 아래에 고정 디렉터리가 있습니다. 그러나 기본 환경 변수를 사용하여 Docker 컨테이너에서 파일 경로를 생성하는 것이 좋습니다.
GitHub는 /github
경로 접두사를 예약하고 작업에 대한 세 개의 디렉터리를 만듭니다.
/github/home
/github/workspace
- 참고: GitHub Actions는 기본 Docker 사용자(루트)가 실행해야 합니다. Dockerfile이USER
명령을 설정하지 않았는지 확인하세요. 그렇지 않으면GITHUB_WORKSPACE
에 액세스할 수 없습니다./github/workflow
추가 참고 자료
- "GitHub Actions 요금 청구 관리"
- 행렬 전략을 사용하여 여러 이미지에서 작업을 실행할 수 있습니다. 자세한 정보는 "워크플로에서 작업 변형 실행"을(를) 참조하세요.