Capgo Semver 테스터
Capacitor 앱 업데이트의 의미학적 버전 호환성을 확인하세요
'로컬 버전'이란 무엇인가
Local Version is the version already on the device when it asks the update server for a bundle. In a Capacitor app, that value can come from
CapacitorUpdater.version in capacitor.config.*. 만약 해당 설정이 없다면 플러그인은 iOS 또는 Android의 네이티브 앱 버전으로 돌아갑니다. 기대하지 마세요. package.json
__CAPGO_KEEP_0__ config
Capacitor config
Set CapacitorUpdater.version __CAPGO_KEEP_0__을 사용하여 앱이 전송하는 하나의 명시적 버전을 원할 때.
Pro: iOS와 Android 빌드 간에 동일하게 유지하기가 쉽습니다.
Con: __CAPGO_KEEP_0__을 업데이트하기 전에 네이티브 릴리즈 전에 잊어버리면 오래된 config가 잘못된 버전을 보고할 수 있습니다.
Native app version
플랫폼 버전을 사용하십시오. 예를 들어 iOS CFBundleShortVersionString 또는 Android
versionName.
Pro: TestFlight, App Store, Play Store, 또는 내부 테스트에서 설치한 바이너리와 일치합니다.
Con: 변경은 네이티브 빌드가 필요하고 플랫폼에 따라 릴리즈 설정이 달라질 수 있습니다.
Bundle 타겟팅
remote bundle 버전과 비교하거나, 채널 semver 규칙, 또는 업로드 제약 조건과 같은 --native-version.
Pro: 최신 네이티브 code이 필요로 하는 자바스크립트를 오래된 앱 바이너리에 보내지 않도록 방지합니다.
Con: 규칙이 너무 엄격하면 채널 또는 배포 메타데이터가 조정될 때까지 유효한 업데이트를 차단할 수 있습니다.
이 테스터에 대해, 장치가 로컬로 보고하는 버전을 입력하고, Capgo이 전달하고 싶은 remote bundle 버전과 비교하세요.
왜 Capgo이 의미론적 버전 관리를 사용하는가
의미론적 버전 관리 소프트웨어 개발에서 가장 광범위하게 채택된 버전 표준입니다. semver를 사용하여 Capgo는 Capacitor 앱에 대한 실시간 업데이트를 안전하게 전달할 수 있는 호환성과 안전성을 보장합니다.
semver 표준은 Capgo가 각 업데이트에 포함된 변경 사항을 정확히 이해할 수 있도록 합니다:
- 패치 업데이트(1.0.0 → 1.0.1): 버그 수정, 자동으로 적용할 수 있는 안전한 업데이트입니다
- 마이너 업데이트(1.0.0 → 1.1.0): 새로운 기능, 백워드 호환성
- 메이저 업데이트(1.0.0 → 2.0.0): 파괴적인 변경, 네이티브 앱 스토어 릴리스가 필요합니다
이러한 변경은 Capgo가 네이티브 code에 불일치한 업데이트를 전송하는 것을 방지하여 사용자에게 충돌이 발생하지 않도록하고 앱이 안정적으로 유지되도록합니다.
가변 Semver 전략: 기본 버전 관리 이외의 전략
semver는 핵심 형식에 대해 엄격하지만, 팀의 필요에 따라 확장할 수 있습니다. pre-release 식별자 및 빌드 메타데이터:
🏷️ 빌드 메타데이터 (+) - "외관" Layer
중요: 빌드 메타데이터는 버전 순위에 무시됩니다 -
1.2.0+anything 같다 1.2.0 Capgo의 업데이트 논리에 대해.
🔧 개발 전판 식별자 (-) - 개발 채널
주의: 전판 버전은 낮은 우선순위를 가진다 -
1.3.0-beta.1 < 1.3.0
🎯 하이브리드 접근 방식 - 양쪽의 최선
실용적인 Semver 사용 사례 및 팀 전략
🚀 스타트업 / 빠른 개발
0.1.0 - 첫 MVP 릴리즈0.2.0-beta.1 - 새로운 기능 테스트0.2.0+ui.v2 - UI 리디자인 메타데이터1.0.0 - 프로덕션 준비0.x.x를 사용하여 1.0 이전 개발, 디자인 추적용 메타데이터
🏢 기업 / 규제
2.1.0 → 분기별 릴리즈2.1.1+sec.patch.cve2024 → 보안 패치와 추적2.2.0-rc.1+audit.ready → 사전 감사 릴리즈 후보엄격한 Semver와 규정 준수 메타데이터
🎮 게임 / 창의적 앱
1.0.0+season.winter.2024 → 계절 콘텐츠1.1.0+event.halloween → 이벤트 기반 기능1.2.0+assets.hd.remaster → 자산 업데이트콘텐츠 추적을 위한 창의적 메타데이터
⚡ 핫픽스 전략
1.2.0 → 현재 생산1.2.1-hotfix.payment → 심각한 버그 수정1.2.1+urgent.20240315.1430 → 시간대별 릴리즈테스트를 위한 프리릴리즈, 배포 추적을 위한 메타데이터
🌍 다중 플랫폼 전략
1.3.0+ios.optimized → iOS 전용 최적화1.3.0+android.material3 → 안드로이드 디자인 업데이트1.3.0+web.pwa.ready → PWA 기능같은 버전, 플랫폼별 메타데이터
🔄 CI/CD 통합
1.4.0-alpha.1+build.123 → 자동화된 프리릴리즈1.4.0+deploy.staging.456 → 스테이징 배포1.4.0+prod.final.789 → 프로덕션 배포배포 메타데이터와 함께 자동화된 버전 관리
- 빌드 메타데이터 (+) 사용하여 트래킹, 타임스탬프 또는 호환성에 영향을 주지 않는 외관 정보를 추적하세요.
- 개발 채널이 다른 업데이트 순위가 필요한 경우 개발 채널에 사용하는 프리릴리즈 식별자 (-) 사용하세요.
- 최대 유연성을 위해 두 가지를 모두 combination하세요.
1.2.0-beta.1+ui.dark.theme.20240315 - 주의: Capgo은 semver 우선 순위 규칙을 준수하므로 채널 전략을 적절히 계획하세요.
중요: Capgo은 엄격한 의미 버전을 사용합니다.
npm의 semver 구현과 달리 Capgo은 공식 SemVer 사양을 엄격하게 따릅니다. npm의 node-semver는 사양에서 알려진 편차를 가지고 있어 예상치 못한 동작을 일으킬 수 있습니다.
예를 들어, npm은 버전과 같이 1.0.0-alpha.1
__CAPGO_KEEP_0__은 버전과 같이
다르게 처리합니다. 자세한 내용은 보고된 이슈
및 미 병합된 시도
Semantic Version의 유효 버전
1.0.0 ✓ 표준 릴리스 2.1.3-alpha ✓ 프리 릴리스 1.0.0-beta.1 ✓ Pre-release with number 1.0.0+build.1 ✓ Build metadata 1.0.0-rc.1+build.1 ✓ Complete version __CAPGO_KEEP_0__
v1.0.0 ✗ Leading 'v' not allowed 1.0 ✗ Missing patch version 1.0.0.0 ✗ Too many version parts 1.0.0- ✗ Empty pre-release 1.0.0+ ✗ Empty build metadata Capgo 업데이트 동작
이 도구는 공식 Semantic Versioning 규격을 따릅니다 npm의 구현과는 달리