GitHub Actions와 GitHub-hosted runners

artp·2024년 12월 17일

git&github

목록 보기
5/18
post-thumbnail

CI/CD(Continuous Integration/Continuous Deployment)를 구현하는 방법은 다양하지만, 그중에서도 GitHub Actions는 GitHub 사용자들이 가장 많이 활용하는 대표적인 CI/CD 도구입니다.

이번 글에서는 GitHub Actions와 이 작업을 실행하는 환경인 GitHub-hosted runners에 대해 자세히 알아보겠습니다.

GitHub Actions란?

GitHub Actions는 GitHub에서 제공하는 자동화 플랫폼으로, 코드 리포지토리에서 빌드, 테스트, 배포 같은 작업을 자동으로 실행할 수 있습니다.
주요 특징은 다음과 같습니다:

  • 자동화된 워크플로 설정: yml 파일을 이용해 PR 생성, 코드 푸시 등 이벤트 기반으로 작업을 정의.
  • 개발 효율성 향상: 반복 작업을 줄이고, 팀의 협업을 간소화.
  • GitHub과 완벽 통합: 별도 설정 없이 GitHub 리포지토리와 자연스럽게 연결.

GitHub Actions의 작동 구조

GitHub Actions는 이벤트 발생 시 자동으로 정의된 워크플로를 실행합니다. 이 과정은 다음과 같은 순서로 진행됩니다:

  1. 이벤트 발생: 코드 푸시, PR 생성, Issue 열림 등.
  2. 러너에서 Job 실행: Job은 여러 Step(작업)으로 구성됩니다.
  3. Step 실행: Job 안에 정의된 개별 작업(스크립트, 명령어 등)을 순차적으로 실행.

GitHub-hosted runners란?

GitHub-hosted runners는 GitHub Actions에서 정의한 작업을 실행하는 컴퓨팅 환경(서버)입니다. GitHub에서 관리하는 가상 머신으로, 추가적인 설정 없이 사용할 수 있습니다.

특징

  1. 관리 부담 없음: 사용자가 서버를 유지하거나 설정할 필요가 없습니다.
  2. 다양한 운영체제 지원: Ubuntu, Windows, macOS 등 선택 가능.
  3. 사전 구성된 환경: 대부분의 언어와 빌드 도구가 미리 설치되어 있어 즉시 사용 가능.
  4. 새로운 실행 환경 제공: 실행 시마다 새로운 환경에서 작업이 실행되어 작업 간 간섭이 없습니다.

GitHub Actions와 GitHub-hosted runners의 관계

GitHub Actions와 GitHub-hosted runners는 서로 밀접하게 연결된 관계입니다.

  • GitHub Actions: CI/CD 워크플로를 설계하고, 작업을 정의합니다.
  • GitHub-hosted runners: 정의된 작업을 실제로 실행하는 환경을 제공합니다.

즉, GitHub Actions는 "무엇을 할지" 정의하고, GitHub-hosted runners는 "어디서 실행할지"를 담당합니다.

Self-hosted runners와 비교

특징GitHub-hosted runnersSelf-hosted runners
관리 주체GitHub에서 제공 및 관리사용자가 직접 관리
설정사전 구성된 환경으로 추가 설정 불필요사용자가 원하는 환경으로 설정 가능
운영체제Ubuntu, Windows, macOS 지원사용자가 원하는 모든 운영체제 설정 가능
유지보수필요 없음사용자가 직접 하드웨어 및 소프트웨어 관리
사용 사례빠르게 시작 가능한 기본적인 작업특수한 요구사항(고성능 서버 등)이 필요

GitHub-hosted runners 성능

GitHub-hosted runners는 GitHub에서 기본으로 제공해주는 자동화 작업 실행 환경입니다. 쉽게 말해, 하나의 컴퓨터처럼 작동하며, CI/CD 작업을 실행하기 위한 임시 가상 머신이라고 이해하면 됩니다.

GitHub-hosted runners는 AWS, Azure, Google Cloud 등의 클라우드 인프라를 기반으로 동작하며, AWS EC2 인스턴스의 프리티어 사양보다 더 높은 성능을 제공합니다. 이를 통해 일반적인 빌드, 테스트, 배포 작업을 처리할 수 있습니다.

GitHub-hosted runners의 사양

1. 운영 체제

  • ubuntu-latest → Ubuntu 22.04 LTS
  • windows-latest → Windows Server 2022
  • macos-latest → macOS 13 Ventura

2. 하드웨어 사양

1. 프라이빗 리포지토리

프라이빗 리포지토리의 GitHub-hosted runners는 기본적으로 제공되는 사양이 제한적이며, 실행 시간은 계정 할당량을 소모합니다.

프라이빗 리포지토리

  • Linux: 2 vCPU / 7GB RAM
  • Windows: 2 vCPU / 7GB RAM
  • macOS: 4 vCPU / 14GB RAM
  • macOS (M1): 3 vCPU / 7GB RAM

2. 퍼블릭 리포지토리

퍼블릭 리포지토리의 GitHub-hosted runners는 무제한 무료로 사용할 수 있으며, 더 높은 사양을 제공합니다.

퍼블릭 리포지토리

  • Linux: 4 vCPU / 16GB RAM
  • Windows: 4 vCPU / 16GB RAM
  • macOS: 4 vCPU / 14GB RAM
  • macOS (M1): 3 vCPU / 7GB RAM

3. Included Storage & Minutes

무료 요금제에서는 사용량이 제한되므로, 퍼블릭과 프라이빗 리포지토리의 차이를 잘 이해하는 것이 중요합니다.

포함된 스토리지 및 실행 시간

  • 퍼블릭 리포지토리: 무제한 사용 가능
  • 프라이빗 리포지토리: 무료 실행 시간은 제한되며, 초과 시 요금 부과

4. GitHub-hosted Larger Runners (유료 요금제)

더 많은 리소스가 필요한 작업은 유료 요금제Larger runners를 활용할 수 있습니다.

유료 런너 사양

  • 최대 64 vCPU / 256GB RAM까지 지원
  • 대규모 빌드, 머신러닝 학습 등 고사양 작업에 적합
  • 사용량에 따라 시간당 요금이 부과됩니다.

5. 정리

  • 퍼블릭 리포지토리: 무제한 무료, 높은 사양 제공
  • 프라이빗 리포지토리: 기본 사양 및 할당 시간 제한
  • 유료 요금제: 고사양 Larger runners 사용 가능

GitHub-hosted runners의 장점

  1. 관리 부담 없음

    • GitHub에서 서버를 제공하고 유지보수하므로, 사용자는 CI/CD 작업에만 집중할 수 있습니다.
  2. 사전 구성된 환경

    • 각 운영 체제에 필수 빌드 도구와 언어 런타임(Node.js, Python, Java 등)이 미리 설치되어 있어, 바로 작업을 실행할 수 있습니다.
  3. 작업 격리 및 보안

    • 모든 작업은 초기화된 깨끗한 가상 환경에서 실행되며, 작업 간 간섭이 없습니다.
  4. 유연한 운영 체제 선택

    • Windows, macOS, Linux 등 다양한 환경에서 작업을 실행할 수 있습니다.

사양이 중요한 작업의 경우

GitHub-hosted runners의 기본 사양(2코어, 7GB RAM)은 대부분의 CI/CD 작업에 충분하지만, 다음과 같은 경우 추가적인 선택지가 필요할 수 있습니다:

1. 고성능 작업

  • 머신러닝 모델 학습, 대규모 컴파일 작업 등 고사양이 필요한 작업.
  • 해결책: 셀프 호스팅 Runner 사용.

2. 지속적인 데이터 유지

  • Runner가 작업 종료 후 데이터를 유지하지 않으므로, 데이터 저장이 필요한 경우.
  • 해결책: AWS EC2와 같은 지속적인 상태를 가진 서버 활용.

3. 비용 제약

  • GitHub Actions의 실행 시간 제한을 초과할 경우.
  • 해결책: 유료 플랜 업그레이드 또는 자체 서버 사용.

EC2와 GitHub-hosted runners 비교

GitHub-hosted runners는 AWS EC2 인스턴스와 유사한 방식으로 작동하지만, CI/CD에 특화된 환경이라는 점에서 차별화됩니다. 주요 차이점은 다음과 같습니다:

특징GitHub-hosted runnersAWS EC2 인스턴스
초기화 시간작업마다 새 환경 초기화 (수 초)수동으로 생성 및 초기화 필요
유지 비용무료 플랜 가능 (유료 플랜도 가능)지속적인 시간당 요금 부과
사양 설정 가능 여부원하는 사양 선택 가능(유료)원하는 사양의 인스턴스 선택 가능
사용 목적CI/CD 작업 중심범용 서버 (어떤 작업이든 가능)
상태 유지작업 종료 후 VM 삭제상태를 유지하거나 스냅샷으로 저장

참고 사이트

profile
donggyun_ee

0개의 댓글