Capgo Semver Tester
Verifica la compatibilità della policy del canale rispetto alla baseline nativa inviata come version_build
La versione del bundle assegnata al canale risolto.
Cosa si intende per "Native Baseline Version"
La Native Baseline Version è la versione dell'app nativa inviata a Capgo come
version_build quando il dispositivo richiede un bundle al server degli update. In un'app Capacitor, quel valore può derivare da
CapacitorUpdater.version nella capacitor.config.*. Se questa impostazione non è
presente, il plugin ricade sulla versione dell'app nativa di iOS o Android. Non dare per scontato che sia la tua package.json
versione, a meno che il tuo build non copi quel valore nel config o nei metadati nativi.
Capgo utilizza ancora version_name per sapere quale bundle scaricato è attualmente installato. Le policy semver dei canali come major, minor, e
patch confrontano il bundle remoto con version_build.
Configurazione Capacitor
Imposta CapacitorUpdater.version quando vuoi una versione esplicita inviata dall'app.
Pro: facile da mantenere uguale tra build iOS e Android.
Contro: una config obsoleta può riportare la versione errata se dimentichi di aggiornarla prima di un rilascio nativo.
Versione dell'app nativa
Usa la versione della piattaforma, come iOS CFBundleShortVersionString o Android
versionName.
Pro: corrisponde al binario installato dagli utenti da TestFlight, App Store, Play Store o test interni.
Contro: modificarlo richiede una build nativa e può variare per piattaforma se le impostazioni di release divergono.
Targeting del bundle
Confrontalo con le versioni dei bundle remoti, le regole semver dei canali o i vincoli di upload dei metadati come --min-update-version. Il canale deve usare --disable-auto-update metadata.
Pro: impedisce l'invio di JavaScript che richiede un code nativo più recente a binari di app obsoleti.
Contro: regole troppo rigide possono bloccare aggiornamenti validi finché il canale o i metadati del bundle non vengono adeguati.
Per questo tester, inserisci la baseline nativa che il dispositivo invia come version_build, quindi confrontala con la versione del bundle remoto che vuoi che Capgo distribuisca.
Perché Capgo usa Semantic Versioning
Versionamento Semantico è lo standard di versioning più diffuso nello sviluppo software. Usando semver, Capgo garantisce compatibilità e sicurezza nel distribuire live update alle tue app Capacitor.
Lo standard semver permette a Capgo di capire esattamente quali modifiche sono incluse in ogni update:
- Aggiornamenti patch (1.0.0 → 1.0.1): Bug fix, sicuri da applicare automaticamente
- Aggiornamenti minor (1.0.0 → 1.1.0): Nuove feature, retrocompatibili
- Aggiornamenti major (1.0.0 → 2.0.0): Breaking changes, richiedono un nuovo rilascio sugli store nativi
Questo impedisce a Capgo di inviare un update incompatibile alla tua code nativa, proteggendo i tuoi utenti dai crash e mantenendo l'app stabile.
Strategie semver flessibili: oltre il versioning di base
Sebbene semver sia rigoroso sul formato core, puoi estenderlo per le esigenze del tuo team usando identificatori pre-release e metadati di build:
🏷️ Metadati di build (+) - Il livello "cosmetico"
Importante: I metadati di build vengono ignorati nella precedenza di versione -
1.2.0+anything uguale 1.2.0 per la logica di update di Capgo.
🔧 Identificatori pre-release (-) - Canali di sviluppo
Nota: Le versioni pre-release hanno precedenza minore -
1.3.0-beta.1 < 1.3.0
🎯 Approccio ibrido - Il meglio dei due mondi
Casi d'uso reali di Semver e strategie di team
🚀 Startup / Sviluppo rapido
0.1.0 - Prima release MVP0.2.0-beta.1 - Test di nuove funzionalità0.2.0+ui.v2 - Metadati per il redesign UI1.0.0 - Pronta per la produzioneUsa 0.x.x per lo sviluppo pre-1.0, metadati per il tracking del design
🏢 Enterprise / Settore regolamentato
2.1.0 → Release trimestrale2.1.1+sec.patch.cve2024 → Patch di sicurezza con tracking2.2.0-rc.1+audit.ready → Release candidate pre-auditSemver rigoroso con metadati di conformità
🎮 Gaming / App creative
1.0.0+season.winter.2024 → Contenuti stagionali1.1.0+event.halloween → Funzionalità event-driven1.2.0+assets.hd.remaster → Update degli assetMetadata creativi per il tracking dei contenuti
⚡ Strategia Hotfix
1.2.0 → Produzione attuale1.2.1-hotfix.payment → Fix bug critici1.2.1+urgent.20240315.1430 → Rilasciato con timestampPre-release per i test, metadata per il tracking del deployment
🌍 Strategia Multi-Platform
1.3.0+ios.optimized → Ottimizzazioni specifiche iOS1.3.0+android.material3 → Aggiornamenti del design Android1.3.0+web.pwa.ready → Funzionalità PWAStessa versione, metadati specifici per piattaforma
🔄 Integrazione CI/CD
1.4.0-alpha.1+build.123 → Pre-release automatizzata1.4.0+deploy.staging.456 → Deployment su staging1.4.0+prod.final.789 → Deployment in produzioneVersioning automatizzato con metadati di deployment
- Usa i metadati di build (+) per tracciamento, timestamp o informazioni cosmetiche che non influenzano la compatibilità
- Usa gli identificatori pre-release (-) per i canali di sviluppo con priorità di aggiornamento diversa
- Combina entrambi per la massima flessibilità:
1.2.0-beta.1+ui.dark.theme.20240315 - Ricorda: Capgo rispetta le regole di precedenza semver, pianifica quindi la tua strategia dei canali di conseguenza
Importante: Capgo usa un semantic versioning rigoroso
A differenza dell'implementazione semver di npm, Capgo segue rigorosamente la specifica SemVer ufficiale. Il node-semver di npm ha deviazioni note dalla specifica, che possono causare comportamenti inaspettati.
Ad esempio, npm tratta versioni come 1.0.0-alpha.1
in modo diverso da quanto richiede la specifica. Vedi il nostro
problema segnalato e
tentativo di fix che non è mai stato mergiato.
Versioni semantiche valide
1.0.0 ✓ Release standard 2.1.3-alpha ✓ Pre-release 1.0.0-beta.1 ✓ Pre-release con numero 1.0.0+build.1 ✓ Metadati di build 1.0.0-rc.1+build.1 ✓ Versione completa Versioni Semantic non valide
v1.0.0 ✗ Prefisso 'v' non consentito 1.0 ✗ Versione patch mancante 1.0.0.0 ✗ Troppi elementi di versione 1.0.0- ✗ Pre-release vuota 1.0.0+ ✗ Metadati di build vuoti Comportamento di Capgo Update
Questo tool segue la specifica ufficiale Specifiche Semantic Versioning a differenza dell'implementazione di npm.