GitHub Actions 실무 스터디 가이드

데이터 엔지니어 · AI 엔지니어를 위한 핵심 요약

#ci-cd #automation #devops

1. GitHub Actions란?

GitHub Actions는 GitHub 저장소에 직접 통합된 CI/CD 및 자동화 플랫폼입니다. 이벤트(푸시, PR, 이슈 생성 등)를 트리거로 워크플로우를 실행하며, YAML로 정의된 파이프라인을 통해 빌드, 테스트, 배포 등을 자동화할 수 있습니다.

3대 핵심 능력

⚡ 이벤트 기반 자동화

push, pull_request, schedule, workflow_dispatch 등 다양한 트리거로 원하는 작업을 자동 실행.

🧩 풍부한 생태계

마켓플레이스에서 20,000+ 액션을 재사용 가능. 커뮤니티와 공식 액션으로 빠른 파이프라인 구축.

☁️ 확장성 & 매트릭스

매트릭스 빌드로 여러 OS/버전 병렬 테스트. 셀프호스팅 러너로 인프라 확장 가능.

2. 왜 써야 하는가?

기존 CI/CD 도구(Jenkins, CircleCI, Travis CI)와 비교했을 때 GitHub Actions의 장점은 명확합니다.

항목 GitHub Actions Jenkins CircleCI
설치/관리 클라우드 (서버 불필요) 서버 설치 필요 클라우드 (무료 티어 제한)
설정 방식 YAML (저장소 내) Groovy / UI YAML
GitHub 통합 ✅ 기본 내장 🔌 플러그인 필요 ✅ 좋음
비용 (공개 저장소) 무제한 무료 자체 인프라 비용 크레딧 제한
재사용 액션 마켓플레이스 풍부 플러그인 생태계 Orb 생태계
💡 핵심: GitHub Actions는 GitHub 생태계에 완전히 통합되어 있어 별도 인프라 없이도 강력한 CI/CD를 구축할 수 있습니다. 데이터/AI 엔지니어링 워크플로우에도 최적화되어 있습니다.

3. 핵심 개념

워크플로우는 YAML로 작성되며, 크게 Workflow, Job, Step, Action, Runner로 구성됩니다.

┌─────────────────────────────────────────────────────────┐ │ Workflow ( .github/workflows/*.yml ) │ │ ┌───────────────────────────────────────────────────┐ │ │ │ Job 1 (runs-on: ubuntu-latest) │ │ │ │ ├─ Step 1: actions/checkout@v4 │ │ │ │ ├─ Step 2: setup-python@v5 │ │ │ │ └─ Step 3: run: pytest tests/ │ │ │ └───────────────────────────────────────────────────┘ │ │ ┌───────────────────────────────────────────────────┐ │ │ │ Job 2 (needs: Job 1, runs-on: windows-latest) │ │ │ │ └─ Step 1: deploy to staging │ │ │ └───────────────────────────────────────────────────┘ │ │ Event: push, pull_request, schedule, ... │ └─────────────────────────────────────────────────────────┘

4. 퀵스타트

① 설치 (별도 설치 불필요)

GitHub Actions는 GitHub에 내장되어 있습니다. 저장소에 .github/workflows/ 디렉터리를 만들고 YAML 파일을 추가하기만 하면 됩니다.

② 첫 번째 워크플로우 예제 (Python)

저장소 루트에 .github/workflows/ci.yml 파일 생성:

name: Python CI
on:
  push:
    branches: [ main, develop ]
  pull_request:
    branches: [ main ]

jobs:
  test:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        python-version: ["3.10", "3.11", "3.12"]

    steps:
      - uses: actions/checkout@v4
      - name: Set up Python
        uses: actions/setup-python@v5
        with:
          python-version: ${{ matrix.python-version }}
      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          pip install -r requirements.txt
      - name: Run tests
        run: pytest tests/ --verbose

③ CLI로 워크플로우 상태 확인

gh CLI를 사용하면 터미널에서 직접 워크플로우를 확인하고 트리거할 수 있습니다.

# 워크플로우 목록 보기
gh run list --limit 5

# 특정 워크플로우 실행 (workflow_dispatch)
gh workflow run ci.yml --ref main

# 최근 실행 상세 보기
gh run view --log
⚠️ 주의: 첫 실행 전 저장소의 Settings → Actions → Permissions에서 워크플로우 권한이 허용되었는지 확인하세요.

5. 핵심 설정 레퍼런스

키워드 설명 예시
on 트리거 이벤트 정의 push, pull_request, schedule, workflow_dispatch
jobs 실행할 작업 목록 build, test, deploy
runs-on 러너 환경 (OS) ubuntu-latest, windows-latest, macos-latest
steps.uses 재사용할 액션 지정 actions/checkout@v4
steps.run 셸 명령 실행 python -m pytest
env 환경 변수 설정 PYTHONPATH: src
needs 작업 간 의존성 needs: [build]
strategy.matrix 매트릭스 빌드 python-version: [3.9, 3.10]

더 자세한 옵션은 공식 문서를 참고하세요.

6. 실무 팁 & 트러블슈팅

🔥 자주 겪는 문제 1 – 워크플로우가 트리거되지 않음
원인: 브랜치 보호 규칙이나 Actions 권한 설정 누락.
해결: Settings → Actions → General에서 "Allow all actions" 확인. 브랜치 보호에서 "Require status checks" 해제 또는 워크플로우를 허용 목록에 추가.
🔥 자주 겪는 문제 2 – Python 패키지 설치 실패
원인: requirements.txt 누락, 파이썬 버전 불일치, 캐시 미사용.
해결: actions/setup-python의 cache: 'pip' 옵션을 추가하여 종속성 캐싱.
- uses: actions/setup-python@v5
  with:
    python-version: '3.11'
    cache: 'pip'
🔥 자주 겪는 문제 3 – 워크플로우 시간 초과
원인: 기본 제한 6시간 초과 / 무한 루프.
해결: Job에 timeout-minutes: 30 설정. 로그에서 hang 지점 확인.

추가 팁:

7. 참고 자료