실행기 살펴보기
GitHub 실행기는 GitHub Actions 워크플로를 실행하는 컴퓨팅 환경입니다. 실행기를 이해하는 것은 성능을 최적화하고, 비용을 관리하고, CI/CD 파이프라인의 보안을 보장하는 데 매우 중요합니다.
Runner 형식 개요
GitHub는 각각 다른 시나리오에 적합한 두 가지 고유 실행기 옵션을 제공합니다.
GitHub 호스팅 실행기
- GitHub에서 관리: GitHub에서 완전히 유지 관리 및 업데이트
- 주문형 크기 조정: 각 작업에 대해 자동으로 프로비전됨
- 여러 환경: Ubuntu, Windows 및 macOS 사용 가능
- 기본 제공 도구: 일반 개발 도구와 함께 미리 설치됨
- 사용량 기반 청구: 사용량에 대해서만 지불
자체 호스팅 실행기
- 사용자가 관리: 환경 및 구성에 대한 모든 권한
- 사용자 지정 환경: 필요한 소프트웨어 또는 하드웨어 구성 설치
- 프라이빗 인프라: 사용자 고유의 컴퓨터 또는 클라우드 인스턴스에서 실행
- 시간 제한 없음: 작업이 필요한 경우 실행할 수 있습니다.
- 고정 비용: 설치 후 분당 요금 없음
보안 고려 사항
중요합니다
공개 리포지토리에서는 셀프 호스팅 러너를 절대 사용하지 마세요. 이렇게 하면 악의적인 행위자가 끌어오기 요청을 통해 인프라에서 코드를 실행할 수 있는 심각한 보안 취약성이 발생합니다.
안전한 사용 패턴:
- 자체 호스팅 러너는 프라이빗 리포지토리에서만 사용하세요.
- 적절한 네트워크 격리 및 모니터링 구현
- 실행기 소프트웨어 및 종속성 정기적으로 업데이트
- 중요한 데이터가 포함되지 않은 전용 컴퓨터 사용
GitHub 호스팅 실행기
GitHub 호스팅 러너는 워크플로를 실행하기 위한 유지 관리 필요 없는 솔루션을 제공합니다. GitHub는 모든 인프라 관리를 처리하므로 서버 관리가 아닌 코드에 집중할 수 있습니다.
사용 가능한 환경
GitHub는 다양한 사양을 가진 여러 실행기 유형을 제공합니다.
| 실행기 유형 | OS 버전 | 프로세서 | RAM | Storage |
|---|---|---|---|---|
ubuntu-latest |
Ubuntu 22.04 | 4코어 CPU | 16GB | 14GB SSD |
windows-latest |
윈도우 서버 2022 | 4코어 CPU | 16GB | 14GB SSD |
macos-latest |
macOS 14 | 4코어 CPU | 14GB | 14GB SSD |
macos-13 |
macOS 13 | 4코어 CPU | 14GB | 14GB SSD |
미리 설치된 소프트웨어
각 실행기는 다음과 같은 포괄적인 개발 도구 집합을 제공합니다.
모든 플랫폼의 일반적인 도구:
- Git, Docker, Node.js, Python, Java, .NET
- 패키지 관리자(npm, pip, Maven, NuGet)
- 빌드 도구 및 컴파일러
- 테스트 프레임워크
플랫폼별 도구:
-
Ubuntu:
apt,snap, 다양한 Linux 유틸리티 - Windows: PowerShell, Visual Studio 빌드 도구, Windows SDK
- macOS: Xcode, Homebrew, CocoaPods
팁 (조언)
실행기 이미지 리포지토리에서 전체 소프트웨어 인벤토리를 확인하거나 워크플로 로그에서 "작업 설정" 섹션을 봅니다.
사용량 제한 및 고려 사항
이러한 제한을 이해하면 워크플로를 효과적으로 계획할 수 있습니다.
- 작업 시간 제한: 작업당 최대 6시간
- 워크플로 시간 제한: 최대 35일(대기 시간 포함)
- 동시 작업: GitHub 계획에 따라 다릅니다(무료 20개, Pro용 180개)
- 스토리지: 작업당 500MB 아티팩트 스토리지
필수 조건
GitHub 호스팅 실행기를 사용하기 전에 사용자는 GitHub Actions를 사용하여 워크플로를 정의할 수 있는 GitHub 리포지토리가 있어야 합니다. 실행기는 GitHub Actions에 대한 액세스 권한이 있는 모든 GitHub 사용자에게 제공됩니다.
설치 프로그램
자체 호스팅 실행기와 달리 GitHub 호스팅 실행기는 개별 워크플로 실행의 일부로 자동으로 설정됩니다. 사용자는 GitHub 리포지토리의 .github/workflows 디렉터리에 저장된 YAML 형식의 파일로 워크플로를 정의합니다. 워크플로 구성 내에서 사용자는 운영 체제 및 소프트웨어 종속성을 포함하여 원하는 실행기 환경을 지정합니다. 일치하는 사양을 가진 실행기는 워크플로가 트리거될 때마다 요청 시 설정되며 작업당 하나의 실행기를 사용합니다. 트리거는 코드 푸시, 끌어오기 요청 또는 리포지토리 디스패치 이벤트와 같은 이벤트에 따라 수동 또는 자동일 수 있습니다.
GitHub 호스팅 실행기는 GitHub Actions에서 제공하는 토큰 또는 자격 증명을 사용하여 GitHub로 인증합니다. GitHub 플랫폼과 통신하고 워크플로 아티팩트를 다운로드하기 위해 기본 제공 연결을 사용합니다.
유지 관리
GitHub는 GitHub에서 호스팅하는 러너의 업데이트 및 유지 관리를 관리하여 최신 소프트웨어 버전 및 보안 패치로 최신 상태로 유지합니다. 러너에 포함된 소프트웨어 도구는 매주 업데이트됩니다. Runner 활동은 모니터링 및 기록되어 워크플로 실행 추적 및 문제 해결을 용이하게 합니다.
라이선스 및 비용
GitHub에서 호스트되는 실행기는 GitHub Actions 가격 책정에 포함되어 있으며 무료 계층을 초과하는 워크플로 시간(분)에 대한 사용량 기반 요금이 청구됩니다. GitHub가 수요에 따라 실행기를 자동으로 프로비전하고 할당 취소하므로 사용자는 자동화되고 비용 효율적인 크기 조정의 이점을 활용할 수 있습니다.
자체 호스팅 실행기
자체 호스팅 실행기를 사용하면 실행 환경을 완벽하게 제어할 수 있습니다. 특정 하드웨어, 소프트웨어 구성이 필요하거나 대용량 워크플로에 대한 비용을 줄이려는 경우에 이상적입니다.
자체 호스팅 실행기를 사용하는 경우
완벽하게 어울리는:
- 특정 하드웨어 요구 사항: GPU 가속, 높은 메모리 또는 사용자 지정 프로세서
- 프라이빗 네트워크 액세스: 내부 데이터베이스, API 또는 서비스에 연결
- 사용자 지정 소프트웨어: 사전 설치된 독점 도구 또는 특정 소프트웨어 버전
- 비용 최적화: 분당 청구 비용이 많이 드는 대용량 워크플로
- 규정 준수 요구 사항: 데이터는 인프라 내에 있어야 합니다.
권장되지 않는 대상:
- 공용 리포지토리(보안 위험)
- 가끔 또는 저용량 작업 흐름
- 인프라 관리 환경이 없는 팀
배포 옵션
다양한 플랫폼에서 자체 호스팅 실행기를 실행할 수 있습니다.
- 물리적 서버: 온-프레미스 하드웨어
- 가상 머신: VMware, Hyper-V 또는 기타 하이퍼바이저
- 클라우드 인스턴스: AWS EC2, Azure VM, Google 컴퓨팅 엔진
- 컨테이너: Docker 컨테이너(제한 사항)
- Kubernetes: Actions Runner 컨트롤러 사용
설정 프로세스
자체 호스팅 실행기를 설정하는 데는 다음과 같은 주요 단계가 포함됩니다.
- GitHub의 Runner 리포지토리에서 Runner 애플리케이션 다운로드
- 인증 토큰을 사용하여 실행기 구성
- 서비스로 설치 (프로덕션에 권장)
- 워크플로에서 특정 러너를 대상으로 하는 레이블을 구성하세요.
네트워크 요구 사항:
- GitHub.com으로의 아웃바운드 HTTPS(443) 액세스
- objects.githubusercontent.com 대한 아웃바운드 HTTPS(443) 액세스
- 인바운드 연결이 필요하지 않음
Runner의 기능 범위 및 관리
자체 호스팅 러너는 여러 다른 조직 수준에서 등록할 수 있습니다.
| Scope | 액세스 수준 | 사용 사례 |
|---|---|---|
| 리포지토리 | 단일 리포지토리만 | 개발/테스트 환경 |
| 조직 | 조직의 모든 리포지토리 | 공유 팀 리소스 |
| 기업 | 엔터프라이즈의 모든 조직 | 중앙 집중식 인프라 관리 |
워크플로에서 러너 대상으로 지정하기
레이블을 사용하여 작업을 실행해야 하는 실행기를 지정합니다.
jobs:
build:
runs-on: [self-hosted, linux, x64, gpu]
steps:
- name: Build with GPU acceleration
run: ./build-with-cuda.sh
유지 관리 책임
실행기 소유자에게는 다음과 같은 책임이 있습니다.
- 보안 업데이트: 실행기 애플리케이션 및 OS 업데이트 유지
- 소프트웨어 관리: 필수 개발 도구 설치 및 유지 관리
- 모니터링: 주자 건강 및 성능 지표 추적
- 용량 계획: 워크플로 요구에 따라 실행기 크기 조정
- 백업 및 복구: 실행기 구성이 백업되었는지 확인
비용 고려 사항
자체 호스팅 실행기에는 GitHub Actions 분당 요금이 부과되지 않지만 다음 비용을 고려합니다.
- 인프라: 서버, 클라우드 인스턴스 또는 컨테이너 오케스트레이션
- 유지 관리: 업데이트, 모니터링 및 문제 해결에 소요된 시간
- 보안: 보안 실행기 관리를 위한 추가 도구 및 프로세스
- 전원 및 냉각: 온-프레미스 배포의 경우
비용 최적화 팁:
- 클라우드 기반 러너에서 자동 크기 조정 사용
- 여러 리포지토리에 대한 러너 풀 구현
- 비업무시간 동안 실행기를 종료하도록 예약
- 적절한 크기의 인스턴스에 대한 리소스 사용률 모니터링