지원되는 실행기 및 하드웨어 리소스
GitHub 퍼블릭 리포지토리와 프라이빗 리포지토리 모두에서 호스팅 실행기 범위를 활용할 수 있습니다.
사용할 수 있는 러너 목록은 다음을 참조하세요. * 퍼블릭 리포지토리용 표준 실행기
GitHub 호스트형 Linux 실행기는 Android SDK Tools에 대한 하드웨어 가속을 지원하므로 Android 테스트 실행 속도가 훨씬 빨라지고 소모 시간(분)을 줄여줍니다. Android 하드웨어 가속에 대한 자세한 내용은 Android 개발자 설명서 내의 Android Emulator에 대한 하드웨어 가속 구성을 참조하세요.
참고 항목
`-latest` 실행기 이미지는 GitHub에서 제공하는 안정적인 최신 이미지이며 운영 체제 공급업체에서 사용할 수 있는 운영 체제의 최신 버전이 아닐 수도 있습니다.
경고
베타 및 사용되지 않는 이미지는 "있는 그대로" "모든 오류를 포함하여" "사용 가능한 상태로" 제공되며, 서비스 수준 계약 및 보증에서 제외됩니다. 베타 이미지는 고객 지원에서 다루지 않을 수 있습니다.
공개 리포지토리용 표준 GitHub-호스티드 러너.
공용 리포지토리의 경우 아래 표에 표시된 워크플로 레이블을 사용하는 작업은 관련 사양으로 실행됩니다. 단일 CPU 실행기를 제외하고, 각 GitHub에서 호스팅되는 실행기는 GitHub에 의해 호스트되는 새 VM(가상 머신)입니다. 단일 CPU 실행기는 공유 가상 머신의 컨테이너에서 호스팅됩니다. GitHub 호스팅 실행기 참조을 참조하세요. 공개 리포지토리에서는 표준 GitHub-호스티드 러너를 무료로 무제한 사용할 수 있습니다.
| 가상 머신/컨테이너 | 프로세서 (CPU) | 메모리 (RAM) | 스토리지 (SSD) | 아키텍처 | Workflow 레이블 |
|---|---|---|---|---|---|
| Linux | 1 | 5 GB | 14 GB | x64 |
ubuntu-slim
|
| Linux | 4 | 16GB | 14GB | x64 |
|
프라이빗 리포지토리에 대한 표준 GitHub 호스팅 실행기.
비공개 리포지토리의 경우, 아래 표에 표시된 Workflow 레이블을 사용하는 작업은 해당 사양의 가상 머신에서 실행됩니다. 이 러너는 GitHub 계정에 할당된 무료 사용 시간을 사용하며, 이후에는 분당 요율로 청구됩니다. 작업 실행기 요금을(를) 참조하세요.
| 가상 머신 | 프로세서 (CPU) | 메모리 (RAM) | 스토리지 (SSD) | 아키텍처 | Workflow 레이블 |
|---|---|---|---|---|---|
| Linux | 1 | 5 GB | 14 GB | x64 |
ubuntu-slim
|
| Linux | 2 | 8GB | 14GB | x64 |
|
워크플로 로그는 작업을 실행하는 데 사용되는 실행기를 나열합니다. 자세한 내용은 워크플로 실행 기록 보기을(를) 참조하세요.
arm64 macOS 실행기 제한 사항
- GitHub에서 제공하는 모든 작업은 arm64 GitHub 호스트된 실행기와 호환됩니다. 그러나 커뮤니티 작업은 arm64와 호환되지 않을 수 있으며 런타임에 수동으로 설치해야 합니다.
- Apple의 가상화 프레임워크 제한으로 인해 중첩된 가상화가 지원되지 않습니다.
- Azure 개인 네트워킹 및 정적 IP 할당과 같은 네트워킹 기능은 현재 macOS 대규모 실행기에서 사용할 수 없습니다.
- arm64 macOS 실행기에는 Apple이 이 기능을 지원하지 않기 때문에 할당된 정적 UUID/UDID가 없습니다. 그러나 Intel MacOS 실행기에서는 정적 UDID, 특히
4203018E-580F-C1B5-9525-B745CECA79EB가 할당됩니다. 빌드를 테스트하려는 동일한 호스트에서 빌드 및 서명하는 경우 개발 프로비저닝 프로필로 서명할 수 있습니다. 정적 UDID가 필요한 경우 Intel 실행기를 사용하고 해당 UDID를 Apple 개발자 계정에 추가할 수 있습니다.
Single-CPU 실행기
Single-CPU GitHub호스티드 실행기는 퍼블릭 및 프라이빗 리포지토리 모두에서 사용할 수 있습니다. 워크플로 레이블 ubuntu-slim을 사용하여 지정된 이러한 실행기는 경량 작업을 실행하기 위한 저렴한 옵션을 제공합니다. 이 유형의 실행기는 자동화 작업, 문제 작업 및 짧은 실행 작업에 최적화되어 있습니다. 일반적인 헤비급 CI/CD 빌드에는 적합하지 않습니다.
`ubuntu-slim` 실행기는 전체 VM 인스턴스가 아닌 컨테이너 내에서 Ubuntu Linux에서 Actions 워크플로를 실행합니다. 작업이 시작되면 GitHub에서 해당 작업에 대한 새 컨테이너를 자동으로 프로비전합니다. 작업의 모든 단계는 컨테이너에서 실행되므로 해당 작업의 단계에서 실행기 파일 시스템을 사용하여 정보를 공유할 수 있습니다. 작업이 완료되면 컨테이너가 자동으로 서비스 해제됩니다. 각 컨테이너는 하이퍼바이저 수준 2 격리를 제공합니다.
참고 항목
실행기용 ubuntu-slim 컨테이너는 권한 없는 모드에서 실행됩니다. 즉, 파일 시스템 탑재, Docker-in-Docker 사용 또는 하위 수준 커널 기능 액세스와 같이 상승된 권한이 필요한 일부 작업은 지원되지 않습니다.
최소한의 도구 세트가 ubuntu-slim 실행기 이미지에 설치되어 간단한 작업에 적합합니다. 이미지에 설치된 소프트웨어에 대한 ubuntu-slim 자세한 내용은 리포지토리의 추가 정보 파일을actions/runner-images 참조하세요.
사용 제한
Single-CPU 런너는 다른 GitHub 호스팅 표준 런너와 동일한 동시성 모델을 따릅니다. 작업 제한을(를) 참조하세요. 러너의 동시성은 당신의 플랜에 따라 결정됩니다.
단일 CPU 실행기 작업 시간 제한은 15분입니다. 작업이 이 한도에 도달할 경우 해당 작업이 종료되고 실패 처리됩니다.
대형 러너
GitHub Team 및 GitHub Enterprise Cloud 플랜을 사용하는 고객은 표준 GitHub 호스트형 실행기보다 더 많은 리소스를 제공하는 다양한 관리형 가상 머신 중에서 선택할 수 있습니다. 이러한 머신을 "대형 러너"라고 합니다. 다음과 같은 고급 기능을 제공합니다.
- 더 많은 RAM, CPU 및 디스크 공간
- 고정 IP 주소
- Azure 개인 네트워킹
- 주자를 그룹화할 수 있는 기능
- 동시 워크플로를 지원하기 위한 자동 크기 조정
- GPU 기반 실행기
이러한 대형 러너는 GitHub에서 호스팅되며 실행기 애플리케이션 및 기타 도구가 미리 설치되어 있습니다.
자세한 내용은 더 큰 실행기 사용을(를) 참조하세요.
관리자 권한
Linux 및 macOS 가상 머신은 모두 암호 없는 sudo를 사용하여 실행됩니다. 명령을 실행하거나 현재 사용자보다 더 많은 권한이 필요한 도구를 설치해야 하는 경우 암호를 제공하지 않고 sudo를 사용할 수 있습니다. 자세한 내용은 sudo 설명서를 참조하세요.
Windows 가상 머신은 UAC(사용자 계정 컨트롤)를 사용하지 않고 관리자로 실행하도록 구성됩니다. 자세한 내용은 Windows 설명서의 사용자 계정 컨트롤의 작동 방식을 참조하세요.
IP 주소
GitHub Actions가 GitHub 호스팅 실행기에서 사용하는 IP 주소 범위 목록을 얻으려면 GitHub REST API를 사용할 수 있습니다. 자세한 내용은 actions 엔드포인트의 응답에 있는 GET /meta 키를 참조하세요. 자세한 내용은 메타 데이터에 대한 REST API 엔드포인트을(를) 참조하세요.
Windows 및 Ubuntu 실행기는 Azure에서 호스트되며 이후 Azure 데이터 센터와 동일한 IP 주소 범위를 갖습니다. macOS 실행기는 GitHub의 자체 macOS 클라우드에서 호스트됩니다.
GitHub 호스팅 실행기의 IP 주소 범위가 너무 많으므로 이를 내부 리소스에 대한 허용 목록으로 사용하지 않는 것이 좋습니다. 대신 고정 IP 주소 범위가 있는 더 큰 실행기 또는 자체 호스팅 실행기를 사용하는 것이 좋습니다. 자세한 내용은 더 큰 실행기 사용 또는 자체 호스팅 실행기을(를) 참조하세요.
API에서 반환하는 GitHub Actions IP 주소 목록은 일주일에 한 번 업데이트됩니다.
GitHub-호스팅 실행기의 통신 요구 사항
GitHub에서 호스팅된 러너는 필수 통신 작업을 수행하기 위해 GitHub 소유의 엔드포인트에 연결을 설정해야 합니다. 또한, 여러분의 러너는 작업 내에서 지정하거나 사용하는 추가 네트워크에 대한 액세스가 필요할 수 있습니다.
자체 호스팅 실행기가 구성 내의 네트워크 간에 GitHub와 적절히 통신할 수 있도록 하려면, 다음 통신이 허용되는지 확인해야 합니다.
참고 항목
나열된 도메인 중 일부는 CNAME 레코드를 사용하여 구성됩니다. 일부 방화벽에서는 모든 CNAME 레코드에 대해 규칙을 재귀적으로 추가해야 할 수 있습니다. CNAME 레코드는 나중에 변경될 수 있으며 나열된 도메인만 일정하게 유지됩니다.
다음은 필수 작업에 필요합니다.
github.com api.github.com *.actions.githubusercontent.com
github.com
api.github.com
*.actions.githubusercontent.com
**다음은 작업을 다운로드하는 데 필요합니다.**
codeload.github.com
codeload.github.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 pkg-containers.githubusercontent.com ghcr.io
*.pkg.github.com
pkg-containers.githubusercontent.com
ghcr.io
**Git 대용량 파일 스토리지에 필요**
github-cloud.githubusercontent.com github-cloud.s3.amazonaws.com
github-cloud.githubusercontent.com
github-cloud.s3.amazonaws.com
Dependabot updates에 대한 작업에 필요
dependabot-actions.githubapp.com
dependabot-actions.githubapp.com
**릴리스 자산을 다운로드하는 데 필요:**
release-assets.githubusercontent.com
release-assets.githubusercontent.com
**VNet에 필요:**
api.snapcraft.io
api.snapcraft.io
파일 시스템
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