팀들은 일반적으로 모바일 환경에 대한 세 가지 접근 방식 중 하나를 선택합니다.
- 두 개의 앱 ID (생산 + 미리 제작)
- 단일 앱 ID + 동적 런타임 환경switching
- 단일 앱 ID + Capgo 채널
첫 두 가지 접근 방식은 작동할 수 있지만, 실제 팀에서는 Capgo 채널 모델이 일반적으로 가장 깨끗합니다.
중복된 앱 ID가 왜 노이즈가 되는지
사용 com.myapp 및 com.myapp.beta __CAPGO_KEEP_0__
- 두 개의 릴리스 PIPELINE
- 두 개의 푸시 ID, 깊이 링크, 및 권한 매핑
- 두 개의 분석 및 충돌 식별
- 분산된 설정 및 환경 간 일관성이 없는 동작
스토어 콘솔, 팀 및 내부 QA 지침을 관리하는 두 개의 제품
런타임 Switching Config이 종종 복잡한 이유
‘한 앱 ID + 런타임 Switch’ 패턴은 일반적으로 앱이 시작 시 환경 변수 또는 플래그를 읽고 API, 키 및 업데이트 동작을 동적으로 재구성합니다.
__CAPGO_KEEP_0__
- QA 팀이 의도하지 않은 흐름을 우회하기 시작할 때
- someone이 프로덕션에서 잘못된 엔드포인트를 사용할 때
- 환경 드리프트가 복잡한 버그를 일으킬 때
- 사용자 기기에서 "이 바이너리가 사용하는 config 버전은 무엇인가?"를 디버깅해야 합니다.
각 릴리스마다 복잡성이 증가하고 팀의 속도는 어디에 잃어버리는지 여기에 있습니다.
The Capgo way: one app ID, many channels
Capgo makes environment control explicit through channels:
- App Store / Play에서 하나의 프로덕션 앱 ID를 유지하세요.
- " vỏ" (native 변경이 실제로 재빌드가 필요할 때까지) 에 대한 한 개의 네이티브 바이너리를 배달하세요.
- 채널 대신 중복된 앱 식별성을 통해 동작을 라우팅하세요.
이것은 실제로 다음과 같은 것을 의미합니다:
production모든 사용자staging내부 QA 및 릴리스 후보beta초대된 테스터hotfix緊急 패치 트랙
Your TestFlight/Play 내부 테스트 앱은 영원히 남아있을 수 있습니다.
JS/CSS/자산 업데이트를 __CAPGO_KEEP_0__를 통해 반복적으로 수행할 수 있습니다. 새로운 네이티브 앱을 배포하지 않고도. staging forever.
You do JS/CSS/asset updates there repeatedly through Capgo without publishing a new native app.
1) 네이티브 릴리즈 베이스 라인
마지막 네이티브 바이너리는 많은 JS 반복에 대해 동일하게 유지됩니다.
네이티브 표면 영역이 실제로 변경되었을 때만 네이티브 바이너리를 다시 빌드합니다.
bun run build
bunx cap sync
# generate Xcode/Android Studio archives as usual
2) 환경별 전용 채널 사용
채널을 통해 업데이트를 배포하세요.
QA에서 테스트하고 문제를 해결한 후 승격하세요.
bun run build
bunx @capgo/cli deploy --channel staging
버전을 명시적으로 관리하는 경우도 있습니다.
bunx @capgo/cli promote vX.Y.Z --channel production
3) TestFlight을 항상 '전제 프로덕션'으로 유지하세요.
bunx @capgo/cli deploy vX.Y.Z --channel staging
bunx @capgo/cli promote vX.Y.Z --channel production
iOS 워크플로우에서 이 의미는 TestFlight 빌드가 전제 프로덕션 업데이트와 연관되어 유지될 수 있다는 것입니다:
In iOS workflows, this means your TestFlight build can stay associated with pre-production updates:
- JS 변경이 빈번하지 않으면 자주 제출하지 마세요.
- QA는 프로덕션 code을 포함하여 스테이징 채널을 통해 항상 유효성을 검사합니다.
- 프로덕션 사용자는 프로덕션 채널 배포만 승인된 프로덕션 채널에서 받습니다.
4) 제어된 워크플로우에만 채널 Switching을 사용하십시오.
고급 팀에게는 QA / 관리자 사용자에게 제어된 채널 Switch를 노출하십시오:
import { CapacitorUpdater } from '@capgo/capacitor-updater';
await CapacitorUpdater.setChannel({
channel: 'staging',
triggerAutoUpdate: true
});
이것은 선택사항입니다. 대부분의 팀은 대시보드에서 채널 assignments를 사용하고 내부 사용자만 아니라 모든 고객에게 채널 Switch를 사용하지 않습니다.
운영 체크리스트
- 한 개의 앱 ID만 사용하십시오 (중복된 프로덕션/스테이징 ID 없음)
- 한 개의 기본 네이티브 빌드 PIPELINE
- 채널 매핑 문서화 (
staging,beta,production,hotfix) - CI/CD에서 프로모션 경로가 강제됩니다.
- 네이티브 리빌드: 네이티브 변경이 실제로 발생할 때만
- 정기적으로 테스트를 되돌려 받습니다.
실용적인 이점
__CAPGO_KEEP_0__ 방법은 환경漂移을 제거하고, 빌드 충돌을 줄이고, 수정을 빠르게 하여:
- QA는 실제 바이너리를 받을 수 있으며 (가짜 “스테이징 앱” 식별자 없음),
- 테스트 플라이트 경로는 안정적입니다.
- 팀은 “두 앱 ID 부채”를 피할 수 있습니다.
- Capgo에서 많은 자바스크립트만으로 수정을 빠르게 할 수 있습니다.
결과는 더 간단한 관리: 더 적은 아티팩트, 더 깨끗한 테레미트리, 그리고 릴리즈 운영에서 더 많은 놀람이 있습니다.
Capgo 환경 최적화: 단일 모바일 앱 ID를 사용하여 스테이징
이 방법을 사용하여 채널 라우팅과 스테이지드 롤아웃을 계획하고 연결하려면 Capgo 환경 최적화: 단일 모바일 앱 ID를 사용하여 스테이징 을 사용하고 있나요? 채널 채널에 대한 구현 세부 정보는 채널 채널에 대한 구현 세부 정보는 채널 채널에 대한 구현 세부 정보는 베타 테스트 솔루션 제품 워크플로우에 대한 베타 테스트 솔루션, 및 버전 대상 솔루션 제품 워크플로우에 대한 버전 대상 솔루션.