Skip to content
2글자 이상 입력하세요
cloudflare으로

Pages Git Integration

13 min 읽기
cloudflarepagesgitgithubgitlabci-cddeployment

Pages Git Integration

Cloudflare Pages는 GitHub 및 GitLab과 연동하여 코드를 푸시할 때마다 자동으로 빌드하고 배포합니다.

개요

Git 연동의 주요 기능:

주의: Git 연동으로 배포를 시작하면 나중에 Direct Upload 방식으로 변경할 수 없습니다. 단, 자동 배포를 비활성화하고 Wrangler로 수동 배포하는 것은 가능합니다.

Git 제공자 연결

설정 단계

  1. Cloudflare 대시보드에서 Workers & Pages로 이동
  2. Create application > Pages > Connect to Git 선택
  3. Git 제공자(GitHub 또는 GitLab)로 인증
  4. 저장소 선택 (비공개/공개 모두 지원)
  5. Install & AuthorizeBegin setup 클릭

GitHub 연결

GitHub 계정 또는 조직의 저장소를 연결할 수 있습니다.

  1. GitHub으로 인증
  2. Cloudflare Pages 앱 설치 권한 부여
  3. 접근 권한 설정:
    • 모든 저장소 접근 허용
    • 또는 특정 저장소만 선택

설치된 앱은 GitHub Applications 페이지에서 확인할 수 있습니다.

조직 저장소의 경우 Switch settings context를 선택하여 조직 설정에 접근합니다.

GitLab 연결

GitLab 연동 시 주의사항:

설치된 앱은 GitLab Authorized Applications 페이지에서 확인할 수 있습니다.

빌드 설정

필수 설정

설정설명
Project name프로젝트 이름 (호스트명으로 사용됨, 예: my-project.pages.dev)
Production branch프로덕션 배포 브랜치 (보통 main 또는 master)
Build command빌드 명령어 (예: npm run build)
Build output directory빌드 결과물 디렉토리 (예: dist, build, out)

프로젝트 설정

빌드 설정

프레임워크 프리셋

Cloudflare Pages는 주요 프레임워크에 대한 프리셋을 제공합니다:

프레임워크Build commandOutput directory
Astronpm run builddist
Next.jsnpx @cloudflare/next-on-pages@1.vercel/output/static
Nuxtnpm run builddist
React (CRA)npm run buildbuild
Vuenpm run builddist
SvelteKitnpm run buildbuild
Gatsbynpm run buildpublic
Hugohugopublic

프레임워크 없이도 정적 파일을 배포할 수 있습니다. 빌드 명령어를 비워두면 됩니다.

고급 설정

Root Directory

모노레포나 비표준 구조에서 빌드 경로를 지정합니다:

my-monorepo/
├── packages/
│ ├── frontend/ ← Root directory: packages/frontend
│ └── backend/
└── package.json

Root Directory 설정

Environment Variables

빌드 시 사용할 환경 변수를 설정합니다:

변수명
NODE_VERSION18
NPM_FLAGS--legacy-peer-deps
API_URLhttps://api.example.com

Preview 배포

동작 방식

Preview URL 형식

https://<commit-hash>.<project-name>.pages.dev

예시:

Branch 배포 설정

특정 브랜치에 대해서만 Preview 배포를 활성화할 수 있습니다:

Settings > Builds & deployments > Branch deployments

옵션설명
All non-production branches모든 브랜치에 대해 Preview 생성
NonePreview 배포 비활성화
Include branches특정 브랜치만 Preview 생성
Exclude branches특정 브랜치 제외

Preview 환경 변수

Preview와 Production에서 다른 환경 변수를 사용할 수 있습니다:

Settings > Environment variables

환경API_URL
Productionhttps://api.example.com
Previewhttps://staging-api.example.com

배포 관리

대시보드에서 확인

배포 후 대시보드에서 확인할 수 있는 정보:

사이트 대시보드

배포 로그

배포 재시도

실패한 배포는 대시보드에서 Retry deployment를 클릭하여 재시도할 수 있습니다.

롤백

이전 배포로 롤백하려면:

  1. Deployments 탭에서 이전 배포 선택
  2. Manage deployment > Rollback to this deployment

GitHub Actions 연동

Git 연동 대신 GitHub Actions를 사용하여 더 세밀한 제어가 가능합니다:

name: Deploy to Cloudflare Pages
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install dependencies
run: npm ci
- name: Build
run: npm run build
- name: Deploy to Cloudflare Pages
uses: cloudflare/wrangler-action@v3
with:
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
command: pages deploy dist --project-name=my-project

필요한 Secrets

GitHub repository settings에서 다음 secrets를 설정합니다:

Secret설명
CLOUDFLARE_API_TOKENCloudflare API 토큰
CLOUDFLARE_ACCOUNT_IDCloudflare 계정 ID

API 토큰 생성: Cloudflare Dashboard > My Profile > API Tokens > Create Token

필요한 권한:

프로젝트 설정 변경

설정 수정

Settings 탭에서 수정 가능한 항목:

프로젝트 삭제

  1. Settings > Delete project
  2. 프로젝트 이름 입력하여 확인

주의: 커스텀 도메인을 사용 중인 경우, 프로젝트 삭제 전에 CNAME 레코드를 먼저 제거하세요. 그렇지 않으면 고아 DNS 엔트리가 남을 수 있습니다.

Wrangler 설정 (선택사항)

Git 연동과 함께 wrangler.toml을 사용하여 환경별 설정을 관리할 수 있습니다:

name = "my-pages-project"
compatibility_date = "2025-03-25"
[vars]
API_HOST = "api.example.com"
ENVIRONMENT = "development"
[env.staging]
[env.staging.vars]
API_HOST = "staging-api.example.com"
ENVIRONMENT = "staging"
[env.production]
[env.production.vars]
API_HOST = "production-api.example.com"
ENVIRONMENT = "production"

Preview URL 활성화

Workers에서 Pages와 유사한 Preview URL을 활성화하려면:

name = "my-worker"
compatibility_date = "2025-04-01"
main = "./worker/index.ts"
preview_urls = true
[assets]
directory = "./dist/client/"

제한사항

항목제한
빌드 시간최대 20분
빌드 메모리8GB
파일 크기단일 파일 최대 25MB
총 파일 수프로젝트당 최대 20,000개
동시 빌드플랜에 따라 다름

자주 사용하는 빌드 명령어

Terminal window
# Node.js 버전 지정
NODE_VERSION=18 npm run build
# npm 플래그 추가
NPM_FLAGS=--legacy-peer-deps npm install && npm run build
# 환경 변수와 함께 빌드
API_URL=https://api.example.com npm run build

Git 연동 관리

Git 연동 설정 후 연동을 관리하고 문제를 해결하는 방법입니다.

연동 상태 확인

Settings > Builds > Git Repository에서 Manage 클릭

여기서 확인 가능한 정보:

지원되는 Git 제공자

제공자지원 여부
GitHub.com✅ 지원
GitLab.com✅ 지원
GitHub Enterprise (Self-hosted)❌ 미지원
GitLab Self-Managed❌ 미지원
Bitbucket❌ 미지원

Self-hosted Git이나 Bitbucket을 사용하는 경우, Direct Upload와 CI/CD 도구(GitHub Actions, GitLab CI 등)를 함께 사용하세요.

설치 확인

Git 연동 앱이 제대로 설치되었는지 확인:

자동 배포 일시 중지

자동 배포를 일시적으로 중지하고 싶을 때 사용합니다.

Production 브랜치 배포 중지

  1. Settings > Builds & deployments 이동
  2. Configure Production deployments 클릭
  3. Enable automatic production branch deployments 체크 해제
  4. Save 클릭

Preview 브랜치 배포 중지

  1. Settings > Builds & deployments 이동
  2. Configure Preview deployments 클릭
  3. None (Disable automatic branch deployments) 선택
  4. Save 클릭

배포 중지 후 수동 배포

자동 배포를 중지한 후에도 Wrangler를 사용하여 수동으로 배포할 수 있습니다:

Terminal window
# 빌드 후 수동 배포
npm run build
npx wrangler pages deploy dist

Git 연동 재설치

연동에 문제가 있을 때 재설치하여 해결할 수 있습니다.

재설치가 필요한 경우

GitHub 재설치 방법

  1. GitHub Applications로 이동
  2. Cloudflare Pages 선택
  3. Configure 클릭
  4. 페이지 하단에서 Uninstall 클릭
  5. Cloudflare 대시보드에서 프로젝트 선택
  6. Settings > Builds > Manage 클릭
  7. Reinstall Git integration 선택
  8. 다시 권한 부여

GitLab 재설치 방법

  1. GitLab Authorized Applications로 이동
  2. Cloudflare Pages 찾기
  3. Revoke 클릭
  4. Cloudflare 대시보드에서 재연결

조직 저장소 접근

GitHub 조직

GitHub 조직의 저장소를 사용하려면:

  1. 조직의 Owner 또는 Admin 권한 필요
  2. 연결 시 Switch settings context로 조직 선택
  3. 조직에 Cloudflare Pages 앱 설치 승인

GitLab 그룹

GitLab 그룹 프로젝트 사용 시:

  1. 해당 프로젝트의 Maintainer 역할 이상 필요
  2. 그룹 프로젝트 선택 시 같은 계정의 다른 멤버도 해당 프로젝트 배포 가능

문제 해결

”Repository not found” 오류

원인: 저장소 접근 권한 없음

해결:

  1. Git 제공자에서 Cloudflare Pages 앱 권한 확인
  2. 저장소가 앱에 접근 허용되어 있는지 확인
  3. 필요시 Git 연동 재설치

”Build not triggered” 오류

원인: Webhook 전달 실패 또는 자동 배포 비활성화

해결:

  1. 자동 배포가 활성화되어 있는지 확인
  2. 브랜치가 배포 대상에 포함되어 있는지 확인
  3. Git 연동 재설치 시도

”Authorization expired” 오류

원인: OAuth 토큰 만료

해결:

  1. Cloudflare 대시보드에서 Manage 클릭
  2. Reinstall Git integration 선택
  3. 다시 인증

출처:


이전 글

Pages API

다음 글

Preview Deployments