본문 바로가기
PR 미리보기

실제 기기에서 모든 Pull Request를 리뷰하세요

CI가 각 Pull Request의 웹 빌드를 전용 Capgo 채널에 upload합니다. 리뷰어는 QR code을 스캔하거나 앱에서 채널을 전환하여 기기에서 직접 테스트할 수 있으며, PR이 종료되면 해당 채널은 자동으로 삭제됩니다. 단, native code 변경 사항은 새로운 Native Build가 필요합니다.

  • Pull request마다 개별 채널 제공
  • QR code 미리보기
  • PR 종료 시 자동 정리

문제점

웹 변경 사항 때문에 매번 새로운 바이너리를 검토할 필요는 없습니다

스토어 테스트 빌드로 PR을 검토하는 방식

  1. 개발자가 PR을 생성합니다

    변경 사항은 준비되었지만, 아직 아무도 실제 기기에서 테스트할 수 없습니다.

  2. 빌드, 서명 및 업로드

    누군가 해당 브랜치의 Native Build를 생성하고, 서명한 뒤, TestFlight나 Play 테스트 트랙에 업로드하고 처리를 기다립니다.

  3. 초대 및 설치

    리뷰어를 테스터로 추가하고 해당 빌드를 직접 설치해야 합니다.

  4. 수정할 때마다 반복

    code를 변경하는 리뷰 코멘트가 달릴 때마다 다시 빌드하고, 업로드하고, 설치해야 합니다.

JavaScript만 변경되었더라도 매번 Native Build가 완료될 때까지 리뷰가 지연됩니다.

이로 인해 팀이 치르는 비용

모든 build

스토어 처리 대기 중

TestFlight이나 Play testing track에 upload한 각 build는 테스터가 설치하기 전에 처리 과정을 거쳐야 합니다. 이는 모든 build에 해당됩니다.

모든 PR

테스트를 위한 별도의 Native Build 필요

Live Update가 없다면, 단순한 웹 변경 사항이라도 누군가 새로운 binary를 build, sign, upload해야만 리뷰어가 브랜치를 확인할 수 있습니다.

지연되는 피드백

작업 완료 후 진행되는 리뷰

리뷰가 build를 기다리는 동안 피드백은 늦게 도착하고, 작업자는 이미 다른 태스크로 넘어갔으며, 브랜치는 main과 멀어지게 됩니다.

작동 방식

Capgo로 Pull Request를 미리 보는 방법

4단계 CI 프로세스: scoped key 설정, push 시 upload, 프리뷰 공유, 종료 시 정리. 아래 모든 명령어는 Capgo 문서 기준입니다.

  1. App Preview 키 생성 및 프리뷰 활성화

    관리자가 CI용 App Preview API 키를 생성합니다. 이 키로 프리뷰 채널을 생성하고 bundle을 upload할 수 있지만, 기본 또는 production 채널은 변경할 수 없습니다. 프리뷰는 앱당 한 번만 활성화할 수 있습니다.

    # once, run by an admin (not the preview key)
    npx @capgo/cli@latest app set com.example.app --preview
    App Preview API 키
  2. PR 빌드를 전용 채널에 upload

    Push할 때마다 CI가 웹 앱을 빌드하고 고유한 bundle 버전으로 upload합니다. bundle upload --channel 명령은 pr-<number> 채널이 없는 경우 생성하고 해당 bundle을 연결합니다.

    npx @capgo/cli@latest bundle upload com.example.app \
      --apikey "$CAPGO_PREVIEW_KEY" \
      --path ./dist \
      --channel "pr-$PR_NUMBER" \
      --bundle "1.2.3-pr.$PR_NUMBER.$GITHUB_RUN_NUMBER"
    채널 문서에서 PR 프리뷰 확인하기
  3. PR에 프리뷰 게시

    get-qr는 채널용 QR code를 출력하거나, --url 옵션으로 프리뷰 URL을 출력하여 CI가 PR 코멘트에 추가할 수 있게 합니다.

    npx @capgo/cli@latest get-qr com.example.app \
      --channel "pr-$PR_NUMBER" \
      --apikey "$CAPGO_PREVIEW_KEY" \
      --url
    get-qr 레퍼런스
  4. PR 종료 시 채널 삭제

    Pull request closed 이벤트 발생 시 실행하세요. App Preview 키를 사용하면 해당 키가 생성한 채널과 연결된 bundle만 삭제됩니다.

    npx @capgo/cli@latest channel delete \
      "pr-$PR_NUMBER" com.example.app \
      --apikey "$CAPGO_PREVIEW_KEY" \
      --delete-bundle \
      --success-if-not-found
    채널 CLI 참조

리뷰어가 PR 채널로 전환하는 다른 방법

두 방식 모두 셀프 할당이 가능한 채널이 필요합니다. App Preview 키는 이를 설정하지 않으므로, 해당 키를 사용할 때는 QR preview를 공유하거나 콘솔에서 디바이스 override를 설정하세요.

Shake 메뉴

내부 빌드에서 흔들기 메뉴를 켜세요. 테스터가 기기를 흔들면 Capgo의 테스트 메뉴가 열리고, 흔들기 채널 선택기에서 채널을 고를 수 있습니다.

// capacitor.config.ts (internal builds)
CapacitorUpdater: {
  shakeMenu: true,
}

인앱 스위처

개발자 설정 화면에 채널 필드를 추가하고, PR 채널 이름으로 setChannel()을 호출하세요.

import { CapacitorUpdater } from '@capgo/capacitor-updater'

await CapacitorUpdater.setChannel({
  channel: 'pr-123',
  triggerAutoUpdate: true,
})
setChannel() 레퍼런스

PR preview는 누가 사용하나요?

작성자뿐만 아니라 PR을 리뷰하는 누구나 모바일 기기에서 직접 확인할 수 있습니다.

QA 엔지니어

  • PR의 web build를 내 기기에서 테스트하세요
  • 앱 재설치 없이 PR 채널 간 이동 가능
  • 채널 이름이 PR 번호와 일치하므로, 현재 어떤 code를 실행 중인지 즉시 알 수 있습니다.

프로젝트 매니저

  • 기능이 머지되기 전에 모바일에서 미리 확인하세요
  • PR에 게시된 QR code를 스캔하세요
  • PR에 직접 피드백을 남기세요

개발자

  • PR이 열려 있는 동안 기기 피드백을 확인하세요
  • 푸시할 때마다 PR 채널이 업데이트됩니다
  • JavaScript 변경 사항에는 Native Build가 필요 없습니다

테스트 빌드 저장 방식 vs Capgo PR 채널

  • PR을 휴대폰에 설치하는 과정

    TestFlight / Play 테스트
    Native Build, 서명 및 스토어 심사 과정
    Capgo PR 채널
    Web build 및 CI를 통한 bundle upload
  • PR 간 전환

    TestFlight / Play 테스트
    다른 빌드 설치
    Capgo PR 채널
    다른 QR code 스캔 또는 채널 전환
  • 리뷰어 설정

    TestFlight / Play 테스트
    테스터 초대 후 각 빌드 설치
    Capgo PR 채널
    앱을 한 번만 설치
  • Native code 및 플러그인 변경 사항

    TestFlight / Play 테스트
    지원
    Capgo PR 채널
    아니요, Native Build가 필요합니다

Capacitor로 빌드된 앱

제품 앱에는 검토 가능한 모바일 변경이 필요합니다

학습, 이벤트, 커뮤니티 앱은 온보딩, 연습, 라이브 세션, 구독 변경 사항을 동시에 검토 단계에 둘 수 있습니다. PR preview를 사용하면 제품, QA, 지원 팀이 머지 전에 모바일에서 바로 확인할 수 있는 빌드를 검토할 수 있습니다.

StudySmarter - 학교 및 대학 앱 아이콘 교육

StudySmarter - 학교 및 대학교

레슨, 코스, 구독 변경 사항에 대해 이해관계자의 검토가 필요한 교육용 앱.

Google Play 설치 수
650만
스토어 평점
4.8
Poll Everywhere 앱 아이콘 비즈니스

Poll Everywhere

머지 전 이벤트 흐름 테스트가 필요한 실시간 참여형 앱.

Google Play 설치 수
110만
스토어 평점
3.2
lichess • 무료 온라인 체스 앱 아이콘 게임 보드

lichess • 무료 온라인 체스

토너먼트 및 분석 화면을 디바이스 프리뷰로 확인할 수 있는 커뮤니티 앱.

Google Play 설치 수
1,130만
스토어 평점
4.3

고객 사례

Capgo로 배포하는 팀들의 이야기

5.0/5 개발 팀 평점 9,400+ 팀 리뷰 보기

Nate van Jole

Private CTO

&ldquo;설정은 하루도 안 걸렸습니다. 채널 기반 롤아웃 덕분에 프로덕션 사용자에게 배포되기 전에 제 기기에서 먼저 테스트할 수 있었습니다.&rdquo;

Michael Haberler의 인물 사진

Michael Haberler

nethead emeritors

&ldquo;업데이터 플러그인 정말 잘 만드셨네요. 제 환경에서는 완벽하게 동작하고, 라이브 업데이트 덕분에 테스트 주기가 훨씬 빨라졌습니다.&rdquo;

no-tone @ Webincode

Webincode 개발자

&ldquo;Device ID를 특정 그룹에 추가하고 변경 사항을 해당 그룹에만 푸시할 수 있다는 점이 정말 큰 도움이 됩니다.&rdquo;

자주 묻는 질문

PR preview에 대해 팀이 자주 묻는 질문

CI를 설정하는 개발자와 리뷰어 모두를 위한 명확한 답변을 확인하세요.

리뷰어는 PR마다 새로운 빌드가 필요한가요?

PR이 웹 레이어만 변경한다면 필요하지 않습니다. 리뷰어는 앱을 한 번만 설치하면 되며, 각 PR의 JavaScript, HTML, CSS 및 에셋은 개별 채널로 전송됩니다. 만약 PR에 플러그인이 추가되거나 native code가 변경된다면 native build가 필요합니다. CI에서 build needed를 실행하여 이를 감지할 수 있습니다.

Native Build가 필요한 경우

CI 키가 프로덕션 채널에 접근할 수 있나요?

App Preview API 키를 사용하면 불가능합니다. 이 키는 preview 채널 생성, bundle upload, 그리고 자신이 생성한 채널과 bundle 삭제만 가능합니다. 기본(default) 또는 메인 채널은 변경할 수 없습니다. GitHub Actions에서 job을 pull_request_target이 아닌 pull_request에서 실행하고, 동일한 repository의 PR로만 제한하세요.

App Preview API 키

리뷰어는 프리뷰를 어떻게 확인하나요?

관리자가 app set --preview로 프리뷰를 한 번 활성화하면 됩니다. 그 후 get-qr를 통해 PR 채널용 QR code를 출력하거나, --url로 웹 프리뷰 URL과 deep link를 출력할 수 있습니다. 이를 PR 코멘트에 남겨주세요.

get-qr 레퍼런스

이전 PR 채널과 bundle은 어떻게 되나요?

pull request closed 이벤트 시 --delete-bundle 및 --success-if-not-found 옵션과 함께 channel delete를 실행하는 job을 추가하세요. App Preview 키를 사용하면 해당 채널과 연결된 bundle이 함께 삭제됩니다. 이전 push로 생성된 bundle은 삭제 권한이 있는 키를 사용하여 bundle cleanup으로 제거할 수 있습니다.

채널 CLI 참조

GitLab, Bitbucket 또는 Azure DevOps에서도 작동하나요?

네. 단계가 Capgo CLI 명령어라서 어떤 CI에서도 실행됩니다. 문서에 GitHub Actions, GitLab CI, Bitbucket Pipelines, Azure DevOps 통합 가이드가 있습니다.

CI/CD 통합

다음 Pull Request를 휴대폰에서 미리 보세요

CI에 upload, QR, cleanup 단계를 추가하고 무료 체험 기간 동안 실제 앱에서 직접 테스트해 보세요.

14일 무료 체험, 신용카드 필요 없음. 네이티브 변경 사항은 여전히 새 빌드가 필요합니다.