개발을 하다 보면 GitHub에 코드를 push할 때마다 옆에 주황색 점(🟠) 이 나타났다가 초록 체크(✅) 또는 빨간 X(❌) 로 바뀌는 것을 본 적 있을 거예요.
이게 바로 CI(Continuous Integration) 와 GitHub Actions가 동작하고 있다는 증거입니다.
이 포스팅에서는 CI가 뭔지, GitHub Actions가 무슨 역할을 하는지, 그리고 전체 동작 흐름을 차근차근 정리합니다.
CI(지속적 통합) 은 개발자가 코드를 변경할 때마다 자동으로 빌드(Build), 테스트(Test), 코드 분석 등을 수행하여 문제를 조기에 발견할 수 있게 해주는 개발 방식입니다.
CI 파이프라인은 보통 아래와 같은 단계를 거칩니다.
빌드(Build):
소스코드를 실행 가능한 형태로 변환 (예: 패키지 설치, 컴파일, 번들링)
테스트(Test):
코드가 정상적으로 동작하는지 자동으로 확인
스타일 검사 (Linting):
코드 스타일 규칙(PEP8, ESLint 등) 준수 여부 확인
보안 취약점 검사:
의존성 패키지에 해킹 위험이 있는지 스캔
GitHub Actions는 GitHub에서 제공하는 CI/CD 자동화 도구입니다.
즉, "GitHub에 내장된 자동화 로봇" 이라고 생각하면 됩니다.
👩💻 개발자
│
│ (1) 코드 작성 & git push
▼
🌐 GitHub 저장소
│
│ (2) 이벤트 감지 (push, PR 등)
▼
🤖 GitHub Actions (CI 서버)
│
├─ (3) 코드 체크아웃
├─ (4) 빌드 (Build)
├─ (5) 테스트 (Test)
├─ (6) 스타일 & 보안 검사 (Lint, Security Scan)
▼
📦 (옵션) 배포(Deploy) 단계
│
▼
✅ GitHub UI에 결과 표시
- ✔️ 성공
- ❌ 실패 (로그 제공)
GitHub Actions는 YAML 파일로 설정합니다.
저장소의 .github/workflows/
폴더에 워크플로우 파일(ci.yml
)을 작성하면 됩니다.
예시 (ci.yml
):
name: CI Pipeline
on:
push:
branches: [ main ]
jobs:
build-and-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3 # 코드 가져오기
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.9'
- name: Install dependencies
run: pip install -r requirements.txt
- name: Run tests
run: pytest
CI가 코드 품질 보장을 담당한다면,
CD(Continuous Delivery/Deployment) 는 테스트 통과 후 자동으로 서버에 배포까지 해줍니다.
CI + CD = DevOps 자동화 파이프라인
CI가 코드 품질 검증을 담당한다면, CD(Continuous Delivery/Deployment)는 테스트를 통과한 코드를 실제 환경(서버, 클라우드)에 자동으로 배포하는 단계입니다.
이 두 가지가 합쳐져서 DevOps 자동화 파이프라인이 완성됩니다.
👩💻 개발자
│
│ (1) 코드 작성 & git push
▼
🌐 GitHub 저장소
│
│ (2) 이벤트 감지 (push, PR, merge 등)
▼
🤖 GitHub Actions (CI 서버)
│
├─ (3) 코드 체크아웃
├─ (4) 빌드 (Build)
├─ (5) 테스트 (Unit/Integration/E2E)
├─ (6) 스타일 & 보안 검사 (Lint, Security Scan)
│
▼
🟢 CI 단계 성공 시
│
▼
🚀 CD(Continuous Delivery / Deployment)
│
├─ (7) 스테이징 환경 배포
│ (테스터/QA가 실제처럼 검증)
│
├─ (8) 자동/수동 승인
│
▼
🌍 (9) 프로덕션 환경(실서버) 자동 배포
│
▼
✅ 사용자에게 새 기능/버그 수정 즉시 제공
CI (Continuous Integration)
→ 빌드, 테스트, 코드 품질 확인 (개발 단계 자동화)
CD (Continuous Delivery)
→ 스테이징 환경까지 자동 배포 (프로덕션 배포는 수동 승인)
CD (Continuous Deployment)
→ 프로덕션 환경까지 자동 배포 (승인 없이 즉시 배포)
💡 이렇게 CI/CD를 깃허브 Actions로 한 번에 구축하면,
개발자가 push 한 번으로 코드 품질 검증 + 자동 배포까지 경험할 수 있습니다.