포스트

[GitHub 100일 챌린지] Day 81 - CI/CD가 뭔가요?

[GitHub 100일 챌린지] Day 81 - CI/CD가 뭔가요?

100일 챌린지 Day 81 - CI/CD 개념과 필요성을 알아봅니다.

배울 내용

  1. CI/CD 개념 이해
  2. CI/CD의 필요성
  3. GitHub Actions 소개

CI/CD란?

CI (Continuous Integration, 지속적 통합)

코드를 자주 통합하고 자동으로 테스트

1
2
3
4
개발자가 코드를 Push하면:
1. 자동으로 빌드
2. 자동으로 테스트
3. 문제 발견 시 알림

예시:

1
2
3
오전 10시: A 개발자 코드 Push → 자동 테스트 ✅ 통과
오후 2시: B 개발자 코드 Push → 자동 테스트 ❌ 실패
         → B에게 알림, 즉시 수정

CD (Continuous Deployment, 지속적 배포)

테스트 통과한 코드를 자동으로 배포

1
2
3
4
테스트 통과 후:
1. 자동으로 서버에 배포
2. 사용자가 최신 버전 사용
3. 배포 과정 자동화

왜 CI/CD가 필요한가요?

수동 배포의 문제점

1
2
3
4
5
6
7
8
9
10
11
12
❌ 수동 배포:
1. 개발자가 코드 작성
2. 수동으로 테스트
3. 수동으로 빌드
4. 수동으로 서버 접속
5. 수동으로 파일 복사
6. 수동으로 서버 재시작

문제:
- 시간 오래 걸림
- 실수 가능성 높음
- 반복 작업 지루함

CI/CD의 장점

1
2
3
4
5
6
7
8
9
✅ CI/CD:
1. 개발자가 코드 Push
2. 자동으로 모든 작업 수행
3. 결과만 확인

장점:
- 빠른 배포
- 실수 감소
- 개발에 집중 가능

GitHub Actions란?

개념

GitHub에서 제공하는 CI/CD 도구

1
2
3
4
5
6
GitHub Actions = 자동화 도우미

Push하면:
- 자동으로 테스트
- 자동으로 빌드
- 자동으로 배포

주요 기능

1. 이벤트 기반 자동화

1
2
3
4
5
6
7
8
9
10
# 코드 Push 시 자동 실행
on: push

# Pull Request 시 자동 실행
on: pull_request

# 매일 정해진 시간에 실행
on:
  schedule:
    - cron: '0 9 * * *'  # 매일 오전 9시

2. 다양한 작업 지원

1
2
3
4
5
6
- 테스트 실행
- 빌드
- 배포
- 코드 분석
- 알림 전송
- 문서 생성

실제 사용 예시

웹사이트 자동 배포

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
name: Deploy Website

on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: 코드 가져오기
        uses: actions/checkout@v3
      
      - name: 빌드
        run: npm run build
      
      - name: 배포
        run: npm run deploy

효과:

1
2
3
4
5
6
7
8
9
10
Before (수동):
1. 코드 수정
2. 로컬에서 빌드
3. 서버 접속
4. 파일 복사
⏱️ 총 30분 소요

After (CI/CD):
1. 코드 수정 + Push
⏱️ 총 1분 소요 (나머지는 자동)

CI/CD 워크플로우

전체 흐름

graph LR
    A[코드 작성] --> B[Git Push]
    B --> C[CI 시작]
    C --> D[자동 테스트]
    D --> E{테스트 결과}
    E -->|통과| F[자동 빌드]
    E -->|실패| G[개발자 알림]
    F --> H[자동 배포]
    H --> I[사용자에게 전달]

단계별 설명

1
2
3
4
5
1️⃣ 개발: 코드 작성
2️⃣ Push: GitHub에 업로드
3️⃣ CI: 자동 테스트/빌드
4️⃣ CD: 자동 배포
5️⃣ 모니터링: 결과 확인

GitHub Actions 구성 요소

Workflow (워크플로우)

1
2
3
4
Workflow = 자동화 작업의 전체 흐름

예시:
"코드 Push → 테스트 → 빌드 → 배포"

Job (작업)

1
2
3
4
5
6
Job = Workflow 안의 작업 단위

예시:
- Job 1: 테스트
- Job 2: 빌드
- Job 3: 배포

Step (단계)

1
2
3
4
5
6
Step = Job 안의 세부 단계

예시 (테스트 Job):
- Step 1: 코드 가져오기
- Step 2: 의존성 설치
- Step 3: 테스트 실행

정리

완료 체크:

  • CI/CD 개념 이해
  • CI/CD의 필요성 파악
  • GitHub Actions 역할 이해

핵심 요약:

1
2
3
4
5
6
7
8
9
CI/CD:
- CI: 자동 테스트/빌드
- CD: 자동 배포
- GitHub Actions: GitHub의 CI/CD 도구

장점:
- 빠른 배포
- 실수 감소
- 자동화

다음: Day 82 - GitHub Actions 시작하기 →


← Day 81 | 전체 커리큘럼 | Day 82 →

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.