데이터 엔지니어 · AI 엔지니어를 위한 핵심 요약
GitHub Actions는 GitHub 저장소에 직접 통합된 CI/CD 및 자동화 플랫폼입니다. 이벤트(푸시, PR, 이슈 생성 등)를 트리거로 워크플로우를 실행하며, YAML로 정의된 파이프라인을 통해 빌드, 테스트, 배포 등을 자동화할 수 있습니다.
3대 핵심 능력
push, pull_request, schedule, workflow_dispatch 등 다양한 트리거로 원하는 작업을 자동 실행.
마켓플레이스에서 20,000+ 액션을 재사용 가능. 커뮤니티와 공식 액션으로 빠른 파이프라인 구축.
매트릭스 빌드로 여러 OS/버전 병렬 테스트. 셀프호스팅 러너로 인프라 확장 가능.
기존 CI/CD 도구(Jenkins, CircleCI, Travis CI)와 비교했을 때 GitHub Actions의 장점은 명확합니다.
| 항목 | GitHub Actions | Jenkins | CircleCI |
|---|---|---|---|
| 설치/관리 | 클라우드 (서버 불필요) | 서버 설치 필요 | 클라우드 (무료 티어 제한) |
| 설정 방식 | YAML (저장소 내) | Groovy / UI | YAML |
| GitHub 통합 | ✅ 기본 내장 | 🔌 플러그인 필요 | ✅ 좋음 |
| 비용 (공개 저장소) | 무제한 무료 | 자체 인프라 비용 | 크레딧 제한 |
| 재사용 액션 | 마켓플레이스 풍부 | 플러그인 생태계 | Orb 생태계 |
워크플로우는 YAML로 작성되며, 크게 Workflow, Job, Step, Action, Runner로 구성됩니다.
GitHub Actions는 GitHub에 내장되어 있습니다. 저장소에 .github/workflows/ 디렉터리를 만들고 YAML 파일을 추가하기만 하면 됩니다.
저장소 루트에 .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
gh CLI를 사용하면 터미널에서 직접 워크플로우를 확인하고 트리거할 수 있습니다.
# 워크플로우 목록 보기
gh run list --limit 5
# 특정 워크플로우 실행 (workflow_dispatch)
gh workflow run ci.yml --ref main
# 최근 실행 상세 보기
gh run view --log
| 키워드 | 설명 | 예시 |
|---|---|---|
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] |
더 자세한 옵션은 공식 문서를 참고하세요.
actions/setup-python의 cache: 'pip' 옵션을 추가하여 종속성 캐싱.- uses: actions/setup-python@v5
with:
python-version: '3.11'
cache: 'pip'
timeout-minutes: 30 설정. 로그에서 hang 지점 확인.
추가 팁:
actions/cache를 활용하여 pip, npm, Docker 레이어 등을 캐싱하세요.${{ secrets.SECRET_NAME }}로 참조하세요.act 툴을 사용하면 워크플로우를 로컬에서 테스트할 수 있습니다.