코드를 push할 때마다 자동으로 테스트하고, 서버에 배포까지 완료됩니다.
이것이 CI/CD이고, GitHub Actions는 이를 무료로 구현하는 가장 접근성 높은 도구입니다.
CI/CD의 의미
- CI(Continuous Integration): 코드 통합 시 자동 테스트 실행
- CD(Continuous Deployment): 테스트 통과 시 자동 서버 배포
두 단계를 합치면 “코드 작성 → 리뷰 → 배포”가 사람의 개입 없이 처리됩니다.
기본 워크플로우 파일 구조
# .github/workflows/deploy.yml
name: CI/CD Pipeline
on:
push:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- run: pip install -r requirements.txt
- run: pytest tests/
deploy:
needs: test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Deploy to server
uses: appleboy/ssh-action@v1
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SERVER_USER }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
script: |
cd /app && git pull && docker compose up -d --build
Secrets 관리
서버 IP, SSH 키, API 키 같은 민감 정보는 GitHub Repository Settings → Secrets에 등록합니다.
${{ secrets.변수명 }} 형식으로 워크플로우에서 안전하게 참조할 수 있습니다.
실전에서 자주 쓰는 패턴
- 환경 분리:
on: push: branches: [dev]로 개발 서버,[main]으로 운영 서버에 각각 배포 - Docker 빌드 캐시:
cache-from: type=gha설정으로 빌드 시간 50% 단축 - Slack 알림: 배포 성공/실패 시 Slack 채널에 자동 알림
- 테스트 커버리지: pytest-cov로 커버리지 보고서 생성, PR에 자동 코멘트
무료 사용 한도
GitHub Actions는 공개 저장소는 무제한, 비공개 저장소는 월 2,000분 무료입니다.
대부분의 소규모 프로젝트는 무료 범위 내에서 충분히 운영됩니다.
CI/CD는 더 이상 대기업만의 전유물이 아닙니다.
오늘부터 .github/workflows 폴더를 만들고 첫 번째 파이프라인을 구성해보세요.
작성한 정보가 조금이나마 유익하고 도움이 되셨다면, 가시기 전에 아래 광고 한번 살짝 눌러주시면 정말 큰 힘이 됩니다. 감사합니다!