CI-CD
CI/CD는 코드 변경을 자동으로 빌드, 테스트, 배포하는 파이프라인입니다. Vue 프로젝트에서는 린팅, 타입 체크, 테스트, 빌드, 배포를 자동화합니다.
면접에서 "프론트엔드 CI/CD 경험이 있나요?"라고 물으면, 어떤 단계를 자동화하고 어떤 도구를 사용했는지 구체적으로 설명할 수 있어야 합니다.
GitHub Actions 워크플로
# .github/workflows/ci.yml
name: CI
on:
push:
branches: [main, develop]
pull_request:
branches: [main]
jobs:
lint-and-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'
- name: 의존성 설치
run: npm ci
- name: 린트
run: npm run lint
- name: 타입 체크
run: npm run type-check
- name: 단위 테스트
run: npm run test:unit
- name: 빌드
run: npm run build
e2e:
needs: lint-and-test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'
- run: npm ci
- name: E2E 테스트
run: npx playwright test
배포 워크플로
# .github/workflows/deploy.yml
name: Deploy
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'
- run: npm ci
- run: npm run build
# Vercel 배포
- uses: amondnet/vercel-action@v25
with:
vercel-token: ${{ secrets.VERCEL_TOKEN }}
vercel-org-id: ${{ secrets.VERCEL_ORG_ID }}
vercel-project-id: ${{ secrets.VERCEL_PROJECT_ID }}
vercel-args: '--prod'
파이프라인 구성
PR 생성/업데이트 시:
1. 린트 (ESLint)
2. 타입 체크 (vue-tsc)
3. 단위/컴포넌트 테스트 (Vitest)
4. 빌드 확인
5. E2E 테스트 (Playwright)
6. 프리뷰 배포 (선택)
main 브랜치 병합 시:
1. 위의 모든 단계
2. 프로덕션 배포
package.json 스크립트
{
"scripts": {
"dev": "vite",
"build": "vue-tsc --noEmit && vite build",
"lint": "eslint . --ext .vue,.ts,.tsx",
"type-check": "vue-tsc --noEmit",
"test:unit": "vitest run",
"test:e2e": "playwright test",
"test": "vitest run && playwright test"
}
}
면접 팁
- CI 파이프라인에서 병렬 실행 으로 시간을 줄이는 전략을 설명할 수 있으면 좋습니다
- 프리뷰 배포(PR마다 임시 환경 생성)는 코드 리뷰 생산성을 높이는 좋은 방법입니다
- **캐싱 **(node_modules, 빌드 산출물)을 활용한 파이프라인 최적화도 중요합니다
요약
Vue 프로젝트의 CI/CD는 GitHub Actions로 린트, 타입 체크, 테스트, 빌드, 배포를 자동화합니다. PR 시에는 검증 파이프라인을, main 병합 시에는 배포 파이프라인을 실행하며, 캐싱과 병렬 실행으로 파이프라인 시간을 최적화합니다.
댓글 로딩 중...