코드가 이미 GitHub에 있다면 CI/CD도 GitHub에서 하는 게 가장 자연스럽습니다. 무료 2000분/월(퍼블릭 무제한), YAML 기반 설정, 마켓플레이스의 풍부한 액션.
GitHub Actions CI/CD 실전 가이드
GitHub Actions로 빌드, 테스트, 배포 자동화 파이프라인을 구축하는 방법을 정리한다. YAML 문법, 재사용 워크플로우, 시크릿 관리, 매트릭스 빌드와 실전 CI/CD 예시를 포함한다.
한 줄 요약: GitHub Actions로 push 시 자동 테스트, PR 시 코드 리뷰, main 머지 시 배포까지 전체 CI/CD 파이프라인을 YAML 하나로 구성할 수 있다.
GitHub Actions는 GitHub 저장소에 내장된 CI/CD 서비스로, 별도 서버 설정 없이 워크플로우를 정의할 수 있다. 이 가이드는 실전에서 가장 많이 쓰는 패턴을 정리한다.
왜 GitHub Actions인가

워크플로우는 .github/workflows/ 디렉토리에 YAML 파일로 정의한다. 핵심 구조: trigger(on: push, pull_request), jobs(병렬 실행 가능한 작업 그룹), steps(순차 실행되는 개별 명령).
CI + 배포 워크플로우name: CI/CD on: push: { branches: [main] } pull_request: { branches: [main] } jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: { node-version: 20 } - run: npm ci - run: npm run lint - run: npm test deploy: needs: test if: github.ref == 'refs/heads/main' runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - run: npm ci && npm run build - uses: amondnet/vercel-action@v25 with: vercel-token: ${{ secrets.VERCEL_TOKEN }}
캐싱으로 CI 속도를 크게 단축할 수 있다. actions/cache로 node_modules를 캐싱하면 npm ci 시간이 수십 초에서 수 초로 줄어든다. 또는 actions/setup-node@v4의 cache: 'npm' 옵션으로 간편하게 설정 가능하다.
기본 워크플로우 구조
핵심 구조: on(트리거) → jobs(작업 단위) → steps(단계). push/PR 시 자동 실행되며, 행렬 전략으로 여러 환경을 병렬 테스트할 수 있습니다.

실전 레시피
자주 쓰는 워크플로우: PR 시 린트+테스트, main 머지 시 자동 배포, 스케줄 기반 정기 작업, AI 코드 리뷰 연동(Claude Code).

고급 워크플로우 패턴
Matrix 빌드: Node.js 18/20/22, OS Linux/macOS/Windows 조합으로 여러 환경에서 동시에 테스트. Reusable Workflows: 공통 CI 로직을 별도 저장소에 정의하고 다른 프로젝트에서 호출. Path filtering: 특정 디렉토리가 변경될 때만 해당 서비스의 CI를 실행.