Skip to content

파괴적인 변경 사항

이 문서는 앱에서 버전별 채널을 사용하여 브레이킹 변경 사항을 처리하는 방법을 설명합니다. 이 접근 방식은 사용자가 호환 가능한 업데이트를 받을 수 있도록 하면서 앱의 다양한 버전을 유지할 수 있도록 합니다.

예시 시나리오

예시 시나리오

예를 들어, 다음을 가정해 보겠습니다.

  • 버전 1.2.3 (기존 버전) - 프로덕션 채널을 사용합니다.
  • 버전 2.0.0 (브레이킹 변경 사항이 포함된 새로운 버전) - v2 채널을 사용합니다.
  • 버전 1.2.4 (버전 1.2.3과 호환되는 라이브 업데이트)
  • 버전 2.0.1 (버전 2.0.0과 호환되는 라이브 업데이트)

전략: 항상 Major 버전에서 defaultChannel 사용

전략: 항상 Major 버전에서 defaultChannel 사용

권장 방법: Set a defaultChannel defaultChannel을 모든 Major 버전에 대해 설정하세요. 이로써 사용자 그룹에 대한 업데이트를 동적으로 할당하지 않고도 특정 사용자 그룹에 업데이트를 푸시할 수 있습니다.

// Version 1.x releases
defaultChannel: 'v1'
// Version 2.x releases
defaultChannel: 'v2'
// Version 3.x releases (future)
defaultChannel: 'v3'

1. 새로운 버전을 위한 채널을 생성하세요.

1. 새로운 버전을 위한 채널을 생성하세요
터미널 창
# Create channel for version 2.x
npx @capgo/cli channel create v2

2. 버전 2.0.0을 위한 Capacitor 설정을 업데이트하세요.

2. 버전 2.0.0을 위한 Capacitor 설정을 업데이트하세요.

Capacitor config를 업데이트하여 앱 스토어에 버전 2.0.0을 빌드하기 전에

capacitor.config.ts
import { CapacitorConfig } from '@capacitor/cli';
const config: CapacitorConfig = {
appId: 'com.example.app',
appName: 'Example App',
plugins: {
CapacitorUpdater: {
// ... other options
defaultChannel: 'v2' // All 2.0.0 users will use v2 channel
}
}
};
export default config;

제목: 3. 별도의 Code Branch 관리

Section titled “3. Manage Separate Code Branches”

Create separate git branches to maintain compatibility between app versions:

터미널 창
# Create and maintain a branch for version 1.x updates
git checkout -b v1-maintenance
git push origin v1-maintenance
# Your main branch continues with version 2.x development
git checkout main

중요: code/API를 지원하지 않는 이전 앱에 자바스크립트 번들을 푸시하지 마세요. 항상 해당 branch에서 업데이트를 빌드하세요:

  • v1-maintenance branch: 1.x 앱의 업데이트를 위한 (production channel)
  • main branch: 2.x 앱의 업데이트를 위한 (v2 channel)

4. 각 채널에 번들을 업로드

제목: 4. 각 채널에 번들을 업로드
터미널 창
# For 1.x updates: Build from v1-maintenance branch
git checkout v1-maintenance
# Make your 1.x compatible changes here
npx @capgo/cli bundle upload --channel production
# For 2.x updates: Build from main branch
git checkout main
# Make your 2.x changes here
npx @capgo/cli bundle upload --channel v2

5. 자체 할당을 활성화하세요

자체 할당 활성화
터미널 창
# Allow apps to self-assign to v2 channel
npx @capgo/cli channel set v2 --self-assign

6. 앱 스토어에 배포

앱 스토어 배포

버전 2.0.0을 앱 스토어에 배포합니다. 이 버전을 다운로드하는 모든 사용자(새 사용자 또는 업그레이드 중인 기존 사용자)는 자동으로 v2 채널을 사용하게 됩니다. 이는 앱 번들에 구성된 때문입니다.

미래 버전으로 확장

미래 버전으로 확장 섹션

버전 3.0.0에 더 많은 깨끗한 변경 사항을 출시할 때:

터미널 창
# Create channel for version 3.x
npx @capgo/cli channel create v3
// capacitor.config.ts for version 3.0.0
const config: CapacitorConfig = {
// ...
plugins: {
CapacitorUpdater: {
defaultChannel: 'v3' // Version 3.x users
}
}
};

이제 모든 버전에 업데이트를 푸시할 수 있습니다:

  • production 채널 → 버전 1.x 사용자
  • v2 채널 → 버전 2.x 사용자
  • v3 채널 → 버전 3.x 사용자

7. 마이그레이션 후 정리

7. 마이그레이션 후 정리 섹션

__CAPGO_KEEP_0__ 버전이 2.x로 모두 마이그레이션 된 후 (3-4 개월 후에):

  1. 삭제 defaultChannel Capacitor 설정에서
  2. __CAPGO_KEEP_0__ 채널 v2 삭제:
터미널 창
npx @capgo/cli channel delete v2
  1. v1-maintenance branch 삭제:
터미널 창
git branch -d v1-maintenance
git push origin --delete v1-maintenance

__CAPGO_KEEP_0__에서 업데이트를 철저히 테스트 하기 전에 배포하기 전

버전 1.x 업데이트를 유지 관리하기

버전 1.x 업데이트를 유지 관리하는 방법

버전 1.x와 호환되는 업데이트를 보내려면:

  1. v1-maintenance branch로 switch:
터미널 창
git checkout v1-maintenance
  1. 변경 사항을 만들고 커밋하세요:
터미널 창
# Make 1.x compatible changes
git add .
git commit -m "Fix for v1.x"
git push origin v1-maintenance
  1. __CAPGO_KEEP_1__
__CAPGO_KEEP_2__
npx @capgo/cli bundle upload --channel production

__CAPGO_KEEP_6__

__CAPGO_KEEP_7__

__CAPGO_KEEP_8__ __CAPGO_KEEP_9__ __CAPGO_KEEP_10__ 채널 채널에 대한 구현 세부 정보를 위해 채널 채널에 대한 구현 세부 정보를 위해 채널 채널에 대한 구현 세부 정보를 위해 베타 테스트 솔루션 제품 워크플로우에 대한 베타 테스트 솔루션, 및 버전 목표 솔루션 제품 워크플로우에 대한 버전 목표 솔루션.