자체 호스트형 실행기 컴퓨터에 대한 요구 사항
다음 요구 사항을 충족하는 한, 모든 머신을 자체 호스팅 실행기로 사용할 수 있습니다.
- 컴퓨터에 자체 호스트형 실행기 애플리케이션을 설치하고 실행할 수 있습니다. 지원되는 운영 체제 및 지원되는 프로세서 아키텍처를 참조하세요.
- 컴퓨터는 GitHub Actions와 통신할 수 있습니다.
- 머신에는 실행하려는 워크플로 유형에 대한 충분한 하드웨어 리소스가 있습니다. 자체 호스트형 실행기 애플리케이션 자체에는 최소한의 리소스만 필요합니다.
- Docker 컨테이너 작업 또는 서비스 컨테이너를 사용하는 워크플로를 실행하려면 Linux 컴퓨터를 사용해야 하며 Docker를 설치해야 합니다.
지원되는 운영 체제
Linux
- Red Hat Enterprise Linux 8 이상
- CentOS 8 이상
- Oracle Linux 8 이상
- Fedora 29 이상
- Debian 10 이상
- Ubuntu 20.04 이상
- Linux Mint 20 이상
- openSUSE 15.2 이상
- SLES(SUSE Enterprise Linux) 15 SP2 이상
Windows
- Windows 10 64비트
- Windows 11 64비트
- Windows Server 2016(64비트)
- Windows Server 2019 64비트
- Windows Server 2022(64비트)
macOS
- macOS 11.0(Big Sur) 이상
지원되는 프로세서 아키텍처
x64
- Linux, macOS, Windows.ARM64
- Linux, macOS, Windows(현재 공개 미리 보기).ARM32
- Linux.
자체 호스트형 실행기의 라우팅 우선 순위
작업을 자체 호스팅 실행기로 라우팅할 때 GitHub는 작업의 runs-on
레이블 및 그룹과 일치하는 실행기를 찾습니다.
- GitHub가 작업의
runs-on
레이블 및 그룹과 일치하는 온라인 유휴 실행기를 찾으면 작업이 실행기에 할당되어 전송됩니다.- 실행기에서 할당된 작업을 60초 이내에 선택하지 않으면 새 실행기가 수락할 수 있도록 작업이 다시 큐에 대기됩니다.
- GitHub가 작업의
runs-on
레이블 및 그룹과 일치하는 온라인 유휴 실행기를 찾지 못하면 실행기 중 하나가 온라인 상태가 될 때까지 작업이 큐에서 대기합니다. - 24시간 넘게 큐에서 대기한 작업은 실패합니다.
자동 확장
특정 레이블을 사용하여 수신하는 웹후크 이벤트에 대한 응답으로 환경에서 자체 호스트형 실행기 수를 자동으로 늘리거나 줄일 수 있습니다.
지원되는 자동 크기 조정 솔루션
GitHub 호스트형 실행기는 기본적으로 필요에 따라 자동크기조정됩니다. GitHub 호스트형 실행기는 자동크기조정 솔루션을 개발하거나 구현하는 데 기본 유지 관리 부담이 적고 비용 효율적인 대안이 될 수 있습니다. 자세한 내용은 GitHub 호스팅 실행기을(를) 참조하세요.
actions/actions-runner-controller (ARC) 프로젝트는 Kubernetes 기반 실행기의 자동크 조정기입니다. GitHub는 배포하는 팀에 전문적인 Kubernetes 지식과 경험이 있는 경우 ARC를 권장합니다.
자세한 내용은 Actions Runner Controller 및 Actions Runner Controller 지원을(를) 참조하세요.
자동 스케일링을 위한 임시 실행기
GitHub은(는) 임시 자체 호스트형 실행기를 사용하여 자동 스케일링을 구현할 것을 권장합니다. 영구 자체 호스트형 실행기를 사용한 자동 스케일링은 권장되지 않습니다. 경우에 따라 GitHub은(는) 작업이 종료되는 동안 영구 실행기에 할당되지 않음을 보장할 수 없습니다. 임시 실행기를 사용하면 GitHub이(가) 실행기에 하나의 작업만 할당하기 때문에 이를 보장할 수 있습니다.
이 방법을 사용하면 자동화를 사용하여 각 작업에 대한 정리된 환경을 제공할 수 있으므로 실행기를 임시 시스템으로 관리할 수 있습니다. 이렇게 하면 이전 작업에서 중요한 리소스의 노출을 제한하고 새 작업을 받는 손상된 실행기의 위험을 완화하는 데 도움이 됩니다.
경고
임시 실행기의 애플리케이션 로그 파일은 문제 해결 및 진단을 위해 외부 로그 스토리지 솔루션으로 전달해야 합니다. 임시 실행기를 배포할 필요는 없지만, GitHub에서는 프로덕션 환경에 임시 실행기 자동 확장 솔루션을 배포하기 전에 실행기 로그가 외부로 전달하고 보존하는 것을 권장합니다. 자세한 내용은 자체 호스트형 실행기 모니터링 및 문제 해결을(를) 참조하세요.
사용 중인 환경에 임시 실행기를 추가하려면 config.sh
를 사용하여 실행기를 등록할 때 --ephemeral
매개 변수를 포함합니다. 예:
./config.sh --url https://github.com/octo-org --token example-token --ephemeral
그러면 GitHub Actions 서비스가 하나의 작업을 처리한 후 실행기를 자동으로 등록 해제합니다. 그런 다음, 등록이 해제된 후 실행기를 초기화하는 고유한 자동화를 만들 수 있습니다.
참고 항목
특정 유형의 실행기에서 작업에 레이블이 지정되어 있지만 해당 형식과 일치하는 항목이 없는 경우 큐에 대기할 때 작업이 즉시 실패하지는 않습니다. 대신 24시간 제한 시간이 만료될 때까지 작업이 큐에 대기 상태로 유지됩니다.
또는 REST API를 사용하여 임시 Just-In-Time 실행기를 만들 수 있습니다. 자세한 내용은 자체 호스트형 실행기에 대한 REST API 엔드포인트을(를) 참조하세요.
자체 호스팅 러너에서 실행기 소프트웨어 업데이트
기본적으로 자체 호스트형 실행기는 새 버전의 실행기 소프트웨어를 사용할 수 있을 때마다 자동으로 소프트웨어 업데이트를 수행합니다. 컨테이너에서 임시 실행기를 사용하는 경우 새 실행기 버전이 릴리스될 때 소프트웨어 업데이트가 반복될 수 있습니다. 자동 업데이트를 해제하면 자체 일정에 따라 컨테이너 이미지의 실행기 버전을 직접 업데이트할 수 있습니다.
자동 소프트웨어 업데이트를 해제하고 소프트웨어 업데이트를 직접 설치하려면 config.sh
를 사용하여 실행기를 등록할 때 --disableupdate
플래그를 지정합니다. 예:
./config.sh --url https://github.com/YOUR-ORGANIZATION --token EXAMPLE-TOKEN --disableupdate
자동 업데이트를 사용하지 않도록 설정하는 경우 실행기 버전을 정기적으로 업데이트해야 합니다. GitHub Actions의 새로운 기능을 사용하려면 GitHub Actions 서비스_와_ 실행기 소프트웨어를 모두 변경해야 합니다. 실행기는 소프트웨어 업데이트 없이 GitHub Actions의 새로운 기능을 활용하는 작업을 올바르게 처리하지 못할 수 있습니다.
자동 업데이트를 사용하지 않도록 설정하는 경우 새 버전을 사용할 수 있게 된 후 30일 이내에 실행기 버전을 업데이트해야 합니다. actions/runner
리포지토리의 릴리스에 대한 알림을 구독하는 것이 좋습니다. 자세한 내용은 알림 구성을(를) 참조하세요.
최신 실행기 버전을 설치하는 방법에 대한 지침은 최신 릴리스의 설치 지침을 참조하세요.
경고
주요, 부 버전 또는 패치 릴리스를 포함하여 소프트웨어용으로 릴리스된 모든 업데이트는 사용 가능한 업데이트로 간주됩니다. 30일 이내에 소프트웨어 업데이트를 수행하지 않으면 GitHub Actions 서비스가 실행기의 큐에 작업을 추가하지 않습니다. 또한 중요한 보안 업데이트가 필요한 경우 GitHub Actions 서비스는 업데이트될 때까지 실행기의 큐에 작업을 추가하지 않습니다.
자동 스케일링을 위한 웹후크
workflow_job
웹후크에서 받은 페이로드를 사용하여 고유한 자동 스케일링환경을 만들 수 있습니다. 이 웹후크는 리포지토리, 조직 및 엔터프라이즈 수준에서 사용할 수 있으며, 이 이벤트의 페이로드에는 워크플로 작업의 수명 주기 단계에 해당하는 action
키(예시: 작업이 queued
, in_progress
및 completed
인 경우)가 포함됩니다. 그런 다음, 해당 웹후크 페이로드에 대한 응답으로 고유한 스케일링 자동화를 만들어야 합니다.
workflow_job
웹후크에 대한 자세한 내용은 웹후크 이벤트 및 페이로드을(를) 참조하세요.- 웹후크를 사용하는 방법을 알아보려면 웹후크 설명서을(를) 참조하세요.
인증 요구 사항
API를 사용하여 리포지토리 및 조직 자체 호스트형 실행기를 등록하고 삭제할 수 있습니다. API에 인증하기 위해 액세스 토큰 또는 GitHub 앱을 사용하여 자동 스케일링 구현을 할 수 있습니다.
액세스 토큰에는 다음 범위가 필요합니다.
- 프라이빗 리포지토리의 경우
repo
범위가 있는 액세스 토큰을 사용합니다. - 퍼블릭 리포지토리의 경우
public_repo
범위가 있는 액세스 토큰을 사용합니다. - 조직의 경우
admin:org
범위가 있는 액세스 토큰을 사용합니다.
GitHub 앱을 사용하여 인증하려면 다음 권한이 할당되어야 합니다.
- 리포지토리의 경우
administration
권한을 할당합니다. - 조직의 경우
organization_self_hosted_runners
권한을 할당합니다.
API를 사용하여 엔터프라이즈 자체 호스트형 실행기를 등록하고 삭제할 수 있습니다. API에 인증하기 위해 액세스 토큰을 사용하여 자동 스케일링을 구현할 수 있습니다.
액세스 토큰에는 manage_runners:enterprise
범위가 필요합니다.
통신
자체 호스팅 러너는 GitHub에 연결하여 작업 할당을 받고 새 버전의 실행기 애플리케이션을 다운로드합니다.
GitHub Actions 실행기 애플리케이션이 오픈 소스입니다. 실행기 리포지토리에서 기여하고 문제를 제출할 수 있습니다. 새 버전이 릴리스되면 실행기 애플리케이션은 실행기에 작업이 할당될 때 또는 실행기에서 작업이 할당되지 않은 경우 릴리스 1주일 이내에 자동으로 업데이트됩니다.
GitHub와의 통신을 위한 요구 사항
- GitHub Actions 작업을 수락하고 실행하려면 자체 호스팅 러너 애플리케이션이 호스트 컴퓨터에서 실행되고 있어야 합니다.
- 호스트 컴퓨터에는 초당 70Kb 이상의 업로드 및 다운로드 속도를 갖춘 적절한 네트워크 액세스 권한이 있어야 합니다.
- 호스트 컴퓨터는 포트 443을 통해 아웃바운드 HTTPS 연결을 만들 수 있어야 합니다.
- 자체 호스팅 러너에 할당된 워크플로 기능에 따라 호스트 컴퓨터는 아래 나열된 GitHub 도메인과 통신할 수 있어야 합니다.
함수별 액세스 가능한 도메인
참고 항목
나열된 도메인 중 일부는 CNAME
레코드를 사용하여 구성됩니다. 일부 방화벽에서는 모든 CNAME
레코드에 대해 규칙을 재귀적으로 추가해야 할 수 있습니다. CNAME
레코드는 나중에 변경될 수 있으며 나열된 도메인만 일정하게 유지됩니다.
다음은 필수 작업에 필요합니다.
github.com api.github.com *.actions.githubusercontent.com
github.com
api.github.com
*.actions.githubusercontent.com
다음은 작업을 다운로드하는 데 필요합니다.
codeload.github.com pkg.actions.githubusercontent.com
codeload.github.com
pkg.actions.githubusercontent.com
변경할 수 없는 작업을 게시하는 데 필요합니다.
ghcr.io
ghcr.io
다음은 작업 요약, 로그, 워크플로 아티팩트 및 캐시 업로드/다운로드에 필요합니다.
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
또한 워크플로에서 다른 네트워크 리소스에 액세스해야 할 수도 있습니다.
GitHub 조직 또는 엔터프라이즈 계정에 IP 주소 허용 목록을 사용하는 경우 자체 호스트형 실행기의 IP 주소를 허용 목록에 추가해야 합니다. GitHub Enterprise Cloud 문서의