← 블로그 목록

GitHub Actions로 빌드부터 배포까지 자동화하기

코드 푸시만 하면 빌드, 테스트, 배포가 자동으로 완료되는 CI/CD 파이프라인 구축 가이드.

CI/CDGitHub Actions자동화

CI/CD가 필요한 이유

1인 개발이라도 수동 배포는 실수를 만듭니다. "빌드 안 됨 → 롤백 → 다시 수정" 사이클을 경험하면 자동화의 가치를 체감합니다.

기본 워크플로우 구조

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
      - name: Deploy to Cloudflare Pages
        uses: cloudflare/wrangler-action@v3
        with:
          apiToken: ${{ secrets.CF_API_TOKEN }}
          command: pages deploy .vercel/output/static --project-name=my-project

환경 분리

- name: Deploy Preview
  if: github.event_name == 'pull_request'
  run: wrangler pages deploy --branch=preview

- name: Deploy Production
  if: github.ref == 'refs/heads/main'
  run: wrangler pages deploy --branch=main

캐싱 전략

- `actions/cache`로 node_modules 캐싱: 빌드 시간 60% 단축

- Gradle 프로젝트는 `~/.gradle/caches` 캐싱

모바일 앱 배포

React Native 앱의 경우 Android는 GitHub Actions에서, iOS는 Codemagic에서 처리합니다. Play Store 업로드는 r0adkll/upload-google-play 액션을 사용합니다.

시크릿 관리

API 토큰, 서명 키 등은 반드시 Repository Secrets에 저장합니다. 절대 코드에 하드코딩하지 마세요.

결론

한 번 설정하면 이후 모든 배포가 git push 한 줄로 끝납니다. 초기 투자 대비 효율이 가장 높은 개발 인프라입니다.