100일 챌린지 Day 81 - CI/CD 개념과 필요성을 알아봅니다.
배울 내용
- CI/CD 개념 이해
- CI/CD의 필요성
- 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 →