CI/CD 파이프라인 기반 자동 PR·자동 배포 워크플로우

발행: (2026년 5월 24일 AM 06:00 GMT+9)
4 분 소요
원문: Dev.to

Source: Dev.to

GitHub Actions를 이용한 실제 프로덕션 수준의 Auto PR + Auto Deploy 워크플로우입니다. 팀에서 메인 브랜치를 안정적으로 유지하고 배포를 자동화하기 위해 흔히 사용하는 설정이죠.
우리는 이를 3개의 파트로 나누어 구축합니다:

🤖 자동 Pull Request 생성 (feature → main)
🧪 PR에 대한 CI 검사 실행
🚀 main에 병합될 때 자동 배포


🤖 1. 자동 Pull Request 생성 워크플로우

특성 브랜치를 푸시하면 자동으로 PR을 생성합니다.

📁 .github/workflows/auto-pr.yml

name: Auto Create Pull Request

on:
  push:
    branches-ignore:
      - main

jobs:
  create-pr:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Create Pull Request
        uses: repo-sync/pull-request@v2
        with:
          destination_branch: main
          github_token: ${{ secrets.GITHUB_TOKEN }}
          pr_title: "Auto PR: ${{ github.ref_name }}"
          pr_body: |
            ## 🤖 Auto-generated PR

            Branch: `${{ github.ref_name }}`
            Please review changes before merging.
Push to feature/login

GitHub Actions triggers
Automatically opens PR → feature/login → main

🧪 2. CI 파이프라인 (PR에서 실행)

깨끗한 코드만 병합되도록 보장합니다.

.github/workflows/ci.yml

on:
jobs:
steps:
  - uses: actions/checkout@v4

  - name: Setup Node
    uses: actions/setup-node@v4
    with:
      node-version: 20

  - name: Install dependencies
    run: npm install

  - name: Run lint
    run: npm run lint

  - name: Run tests
    run: npm test

🧠 이 워크플로우가 하는 일

병합 전:

  • Lint 검사 실행
  • 테스트 실행
  • 품질이 낮은 코드가 병합되는 것을 차단

🚀 3. main에 병합될 때 자동 배포

PR이 병합되면 애플리케이션을 배포합니다.

📁 .github/workflows/deploy.yml

예시: React + Node 배포 (Vercel + Render)

name: Auto Deploy

on:
  push:
    branches: [ main ]

jobs:
  deploy-frontend:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4

      - name: Install frontend
        working-directory: client
        run: npm install

      - name: Build frontend
        working-directory: client
        run: npm run build

      - name: Deploy to Vercel
        run: npx vercel --prod --token=${{ secrets.VERCEL_TOKEN }}

  deploy-backend:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4

      - name: Install backend
        working-directory: server
        run: npm install

      - name: Deploy backend (Render webhook)
        run: curl -X POST ${{ secrets.RENDER_DEPLOY_HOOK }}

다음으로 이동:
👉 Repo → Settings → Secrets → Actions
추가:

https://api.render.com/deploy/xxx

🧭 5. 전체 워크플로우 시연

개발자 흐름

git checkout -b feature-login
git push origin feature-login

🤖 Pull Request 생성
🧪 CI 검사 실행
👀 리뷰 대기 (선택)
🔀 main에 병합
🚀 프론트엔드 + 백엔드 자동 배포

GitHub 설정:

  • 리뷰어 1~2명 요구
  • 병합 전 CI 통과 요구
  • Settings → Branches → main
    • PR 없이 병합 금지 활성화
    • 상태 체크 요구
    • 직접 푸시 차단
name: Notify Slack
run: |
curl -X POST -H 'Content-type: application/json' \
--data '{"text":"New deployment to production 🚀"}' \
${{ secrets.SLACK_WEBHOOK }}

🟣 버전 태깅 추가


⚠️ 흔히 하는 실수

❌ 테스트 없이 자동 배포

→ 프로덕션이 깨짐

❌ 브랜치 보호 설정 없음

→ 누구든 main에 푸시 가능

❌ 비밀 키 누락

→ 배포가 조용히 실패


🧠 최종 아키텍처 (프로 수준)

Feature Branch

Auto PR Created

CI (tests + lint)

Review + Approval

Merge to main

CD Pipeline

Frontend deploy (Vercel)
Backend deploy (Render/AWS)

Slack/Discord notification
0 조회
Back to Blog

관련 글

더 보기 »

내 스킬

프로젝트를 위한 AI 지시문을 만들고, 설치하고, 관리하세요 — 코딩이 필요 없습니다. CREATE 이름을 정하고, 카테고리를 선택하고, 원하는 것을 설명하세요 — 마법사가 자동으로 구성합니다.