안녕하세요!
이번에는 GitHub Actions를 활용해 CI/CD 파이프라인을 구축하는 방법을 단계별로 살펴보겠습니다.
코드 푸시 시 자동으로 테스트·빌드·배포까지 실행되는 워크플로우 예제와 주요 팁을 담았으니, 리포지토리에 바로 적용해보세요.
⸻
📋 목차
1. CI/CD 개요
2. GitHub Actions 기초
3. 워크플로우 파일 구조
4. 예제: Node.js 앱 테스트·빌드·Docker Hub 배포
5. 매트릭스 빌드 활용
6. 시크릿·환경 변수 관리
7. Best Practices & 주의사항
8. 마무리
⸻
1️⃣ CI/CD 개요
• CI(Continuous Integration): 코드 변경 시 자동으로 빌드·테스트 실행
• CD(Continuous Delivery/Deployment): 통과된 빌드 결과를 자동으로 스테이징·프로덕션에 배포
• 이점: 빠른 피드백·일관된 배포·인적 오류 감소
⸻
2️⃣ GitHub Actions 기초
• Workflow: .github/workflows/*.yml 파일로 정의
• Event: push, pull_request 등 트리거
• Job: 독립 환경에서 실행되는 단계 묶음
• Step: 하나의 커맨드 또는 액션 호출
• Runner: 워크플로우를 실행하는 호스트 (GitHub-hosted 또는 self-hosted)
⸻
3️⃣ 워크플로우 파일 구조
# .github/workflows/ci-cd.yml
name: CI/CD Pipeline
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: 코드 체크아웃
uses: actions/checkout@v4
- name: Node.js 설정
uses: actions/setup-node@v4
with:
node-version: '18'
- name: 의존성 설치
run: npm ci
- name: 테스트 실행
run: npm test
- name: 빌드
run: npm run build
docker-publish:
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Docker 로그인
uses: docker/login-action@v2
with:
registry: docker.io
username: ${{ secrets.DOCKERHUB_USER }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: 이미지 빌드 및 푸시
uses: docker/build-push-action@v4
with:
context: .
push: true
tags: yourusername/yourrepo:latest
• on: 트리거 이벤트 지정
• jobs: build→docker-publish 의존성 설정
• uses: 외부 액션 사용
• ${{ secrets.X }}: GitHub 리포지토리 시크릿 참조
⸻
4️⃣ 매트릭스 빌드 활용
test-matrix:
runs-on: ubuntu-latest
strategy:
matrix:
node: [16, 18, 20]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with: { node-version: ${{ matrix.node }} }
- run: npm ci
- run: npm test
• 서로 다른 Node 버전·OS 조합에서 병렬 테스트 자동 실행
• matrix 설정으로 확장성 있는 테스트 환경 구성
⸻
5️⃣ 시크릿·환경 변수 관리
• Repository Settings → Secrets에 DOCKERHUB_USER, DOCKERHUB_TOKEN, AWS_ACCESS_KEY_ID 등 등록
• 워크플로우에서 ${{ secrets.SECRET_NAME }}로 안전하게 사용
• Environment 기능으로 스테이징·프로덕션 별 시크릿 분리 가능
⸻
6️⃣ Best Practices & 주의사항
• 의존성 캐시: actions/cache로 node_modules·Docker 레이어 캐시 활용
• 병렬화: 빌드·테스트·릴리즈 단계를 병렬로 실행해 전체 시간이 단축
• 작고 명확한 워크플로우: 하나의 워크플로우에 너무 많은 책임을 부여하지 않기
• 린팅·보안 검사: actions/setup-eslint, trivy-action 등을 통해 코드 품질·보안 체크
• 롤백 전략: 실패 시 특정 단계 이전 상태로 자동 복구 방안 마련
⸻
7️⃣ 마무리
GitHub Actions를 활용하면 별도 CI 인프라 없이도
“코드 푸시 → 자동 테스트·빌드 → 컨테이너 배포”를 손쉽게 구현할 수 있습니다.
위 예제와 팁을 참고해 여러분 리포지토리에 맞는 CI/CD 파이프라인을 구축해 보세요!
'IT & Tech 정보' 카테고리의 다른 글
🚀 Elasticsearch를 이용한 로그 수집·검색·대시보드: ELK 스택 (0) | 2025.05.25 |
---|---|
🚀 WebSocket 기반 실시간 채팅 서버: Socket.IO + React (0) | 2025.05.25 |
🚀 AWS Lambda + API Gateway 서버리스 애플리케이션 구현 (0) | 2025.05.25 |
🚀 Kubernetes 헬름 차트 작성 & 배포 (0) | 2025.05.25 |
🚀 Dockerfile 멀티스테이지 빌드 최적화 (0) | 2025.05.25 |