Passer au contenu

Changements incompatibles

Cette page explique comment gérer les changements incompatibles (breaking changes) avec Capgo en utilisant des canaux par version majeure.

Vous avez:

  • Application 1.2.3 (ancienne génération) sur le canal production
  • Application 2.0.0 (nouvelle génération) sur le canal v2
  • Mise à jour OTA 1.2.4 compatible 1.x
  • Mise à jour OTA 2.0.1 compatible 2.x

Définissez un defaultChannel par version majeure. Cela vous permet de contrôler précisément quels utilisateurs reçoivent quelles mises à jour.

// Releases 1.x
defaultChannel: 'v1'
// Releases 2.x
defaultChannel: 'v2'
// Releases 3.x
defaultChannel: 'v3'

1. Créer un canal pour la nouvelle version

Section titled “1. Créer un canal pour la nouvelle version”
Terminal window
# Create channel for version 2.x
npx @capgo/cli channel create v2

2. Mettre à jour la config Capacitor pour 2.0.0

Section titled “2. Mettre à jour la config Capacitor pour 2.0.0”

Avant de publier la version store 2.0.0:

capacitor.config.ts
import { CapacitorConfig } from '@capacitor/cli';
const config: CapacitorConfig = {
appId: 'com.example.app',
appName: 'Example App',
plugins: {
CapacitorUpdater: {
defaultChannel: 'v2'
}
}
};
export default config;

Gardez une branche par génération native incompatible.

Terminal window
# Create and maintain a branch for version 1.x updates
git checkout -b v1-maintenance
git push origin v1-maintenance
# Main branch for 2.x
git checkout main
Terminal window
# Updates for 1.x apps
git checkout v1-maintenance
npx @capgo/cli bundle upload --channel production
# Updates for 2.x apps
git checkout main
npx @capgo/cli bundle upload --channel v2

5. Autoriser l’auto-assignment si nécessaire

Section titled “5. Autoriser l’auto-assignment si nécessaire”
Terminal window
npx @capgo/cli channel set v2 --self-assign

Publiez la version 2.0.0. Les utilisateurs qui installent cette version basculent automatiquement sur v2 grâce à defaultChannel.

Pour 3.0.0:

Terminal window
# 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'
}
}
};

Vous obtenez alors un routage clair:

  • production -> utilisateurs 1.x
  • v2 -> utilisateurs 2.x
  • v3 -> utilisateurs 3.x

Quand la base utilisateur 1.x est négligeable:

  1. retirez defaultChannel des futurs binaires si nécessaire
  2. supprimez les canaux/branches obsolètes
Terminal window
npx @capgo/cli channel delete v2
Terminal window
git branch -d v1-maintenance
git push origin --delete v1-maintenance

Pour continuer à corriger la 1.x:

  1. basculez sur v1-maintenance
  2. appliquez des changements compatibles 1.x
  3. uploadez sur production
Terminal window
git checkout v1-maintenance
git add .
git commit -m "Fix for v1.x"
git push origin v1-maintenance
npx @capgo/cli bundle upload --channel production