GitHub Actions와 CI/CD 완벽 이해하기

0

Git

목록 보기
13/13
post-thumbnail

🚀 GitHub Actions와 CI/CD 완벽 이해하기

개발을 하다 보면 GitHub에 코드를 push할 때마다 옆에 주황색 점(🟠) 이 나타났다가 초록 체크(✅) 또는 빨간 X(❌) 로 바뀌는 것을 본 적 있을 거예요.

이게 바로 CI(Continuous Integration)GitHub Actions가 동작하고 있다는 증거입니다.

이 포스팅에서는 CI가 뭔지, GitHub Actions가 무슨 역할을 하는지, 그리고 전체 동작 흐름을 차근차근 정리합니다.


✅ 1. CI(Continuous Integration)란?

CI(지속적 통합) 은 개발자가 코드를 변경할 때마다 자동으로 빌드(Build), 테스트(Test), 코드 분석 등을 수행하여 문제를 조기에 발견할 수 있게 해주는 개발 방식입니다.

🔹 CI의 핵심 개념

  1. 지속적(Continuous) → 코드를 자주 main 브랜치에 통합
  2. 통합(Integration) → 새로운 코드가 기존 코드와 잘 동작하는지 자동 확인

✅ 2. CI가 하는 일은?

CI 파이프라인은 보통 아래와 같은 단계를 거칩니다.

  • 빌드(Build):
    소스코드를 실행 가능한 형태로 변환 (예: 패키지 설치, 컴파일, 번들링)

  • 테스트(Test):
    코드가 정상적으로 동작하는지 자동으로 확인

    • 유닛 테스트 (함수 단위)
    • 통합 테스트 (모듈 간 연계)
    • E2E 테스트 (사용자 시나리오 전체)
  • 스타일 검사 (Linting):
    코드 스타일 규칙(PEP8, ESLint 등) 준수 여부 확인

  • 보안 취약점 검사:
    의존성 패키지에 해킹 위험이 있는지 스캔


✅ 3. GitHub Actions의 역할은?

GitHub Actions는 GitHub에서 제공하는 CI/CD 자동화 도구입니다.

🔹 역할 요약

  • 코드 이벤트 감지: push, PR 생성, release 등 이벤트 트리거
  • 자동화 작업 실행: 빌드, 테스트, 스타일 검사, 배포 등
  • 결과 피드백 제공: 성공(✅), 실패(❌), 진행 중(🟠)

즉, "GitHub에 내장된 자동화 로봇" 이라고 생각하면 됩니다.


✅ 4. GitHub Actions 동작 흐름

📌 워크플로우는 이렇게 동작합니다

👩‍💻 개발자
    │
    │ (1) 코드 작성 & git push
    ▼
🌐 GitHub 저장소
    │
    │ (2) 이벤트 감지 (push, PR 등)
    ▼
🤖 GitHub Actions (CI 서버)
    │
    ├─ (3) 코드 체크아웃
    ├─ (4) 빌드 (Build)
    ├─ (5) 테스트 (Test)
    ├─ (6) 스타일 & 보안 검사 (Lint, Security Scan)
    ▼
📦 (옵션) 배포(Deploy) 단계
    │
    ▼
✅ GitHub UI에 결과 표시
   - ✔️ 성공
   - ❌ 실패 (로그 제공)

✅ 5. GitHub Actions는 어떻게 설정할까?

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

✅ 6. CI + CD까지 확장하면?

CI가 코드 품질 보장을 담당한다면,
CD(Continuous Delivery/Deployment)테스트 통과 후 자동으로 서버에 배포까지 해줍니다.

CI + CD = DevOps 자동화 파이프라인

✅ 6-1. CI + CD를 포함한 전체 DevOps 파이프라인

CI가 코드 품질 검증을 담당한다면, CD(Continuous Delivery/Deployment)는 테스트를 통과한 코드를 실제 환경(서버, 클라우드)에 자동으로 배포하는 단계입니다.
이 두 가지가 합쳐져서 DevOps 자동화 파이프라인이 완성됩니다.


🚀 6-2 CI + CD 전체 흐름 (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: 테스트된 코드를 자동 배포 (스테이징 → 프로덕션)
  • DevOps 파이프라인: 개발 → 테스트 → 배포 전 과정을 자동화

  • CI: 코드 변경 시 자동으로 빌드/테스트 → 문제를 빠르게 잡아줌
  • GitHub Actions: GitHub에서 제공하는 CI/CD 자동화 도구
  • 장점: 코드 품질 향상, 빠른 피드백, 반복 작업 자동화

💡 이렇게 CI/CD를 깃허브 Actions로 한 번에 구축하면,
개발자가 push 한 번으로 코드 품질 검증 + 자동 배포까지 경험할 수 있습니다.

0개의 댓글