Changements incompatibles
Cette documentation explique comment gérer les changements incompatibles dans votre application en utilisant des canaux versionnés. Cette approche vous permet de maintenir différentes versions de votre application tout en garantissant que les utilisateurs reçoivent des mises à jour compatibles.
Scénario d’exemple
Section titled “Scénario d’exemple”Disons que vous avez :
- Version de l’application 1.2.3 (ancienne version) - utilise le canal production
- Version de l’application 2.0.0 (nouvelle version avec changements incompatibles) - utilise le canal v2
- Mise à jour en direct 1.2.4 (compatible avec 1.2.3)
- Mise à jour en direct 2.0.1 (compatible avec 2.0.0)
Stratégie : Toujours utiliser defaultChannel pour les versions majeures
Section titled “Stratégie : Toujours utiliser defaultChannel pour les versions majeures”Approche recommandée : Définissez un defaultChannel pour chaque version majeure. Cela garantit que vous pouvez toujours envoyer des mises à jour à des groupes d’utilisateurs spécifiques sans dépendre de l’attribution dynamique de canal.
// Versions 1.xdefaultChannel: 'v1'
// Versions 2.xdefaultChannel: 'v2'
// Versions 3.x (futures)defaultChannel: 'v3'1. Créer un canal pour la nouvelle version
Section titled “1. Créer un canal pour la nouvelle version”# Créer un canal pour la version 2.xnpx @capgo/cli channel create v22. Mettre à jour la configuration Capacitor pour la version 2.0.0
Section titled “2. Mettre à jour la configuration Capacitor pour la version 2.0.0”Mettez à jour votre configuration Capacitor avant de compiler la version 2.0.0 pour l’app store :
import { CapacitorConfig } from '@capacitor/cli';
const config: CapacitorConfig = { appId: 'com.example.app', appName: 'Example App', plugins: { CapacitorUpdater: { // ... autres options defaultChannel: 'v2' // Tous les utilisateurs de 2.0.0 utiliseront le canal v2 } }};
export default config;3. Gérer des branches de code séparées
Section titled “3. Gérer des branches de code séparées”Créez des branches git séparées pour maintenir la compatibilité entre les versions de l’application :
# Créer et maintenir une branche pour les mises à jour de la version 1.xgit checkout -b v1-maintenancegit push origin v1-maintenance
# Votre branche main continue avec le développement de la version 2.xgit checkout mainCritique : Ne poussez jamais de bundles JavaScript vers des anciennes applications qui attendent du code/API natif qu’elles n’ont pas. Compilez toujours les mises à jour depuis la branche appropriée :
- branche v1-maintenance : Pour les mises à jour vers les applications 1.x (canal production)
- branche main : Pour les mises à jour vers les applications 2.x (canal v2)
4. Téléverser les bundles vers les canaux respectifs
Section titled “4. Téléverser les bundles vers les canaux respectifs”# Pour les mises à jour 1.x : Compiler depuis la branche v1-maintenancegit checkout v1-maintenance# Faites vos modifications compatibles 1.x icinpx @capgo/cli bundle upload --channel production
# Pour les mises à jour 2.x : Compiler depuis la branche maingit checkout main# Faites vos modifications 2.x icinpx @capgo/cli bundle upload --channel v25. Activer l’auto-attribution
Section titled “5. Activer l’auto-attribution”# Autoriser les applications à s'auto-attribuer au canal v2npx @capgo/cli channel set v2 --self-assign6. Déployer sur l’App Store
Section titled “6. Déployer sur l’App Store”Compilez et déployez la version 2.0.0 sur l’app store. Tous les utilisateurs qui téléchargent cette version (que ce soit de nouveaux utilisateurs ou des utilisateurs existants qui mettent à niveau) utiliseront automatiquement le canal v2 car il est configuré dans le bundle de l’application.
Évolution vers les versions futures
Section titled “Évolution vers les versions futures”Lorsque vous publiez la version 3.0.0 avec plus de changements incompatibles :
# Créer un canal pour la version 3.xnpx @capgo/cli channel create v3// capacitor.config.ts pour la version 3.0.0const config: CapacitorConfig = { // ... plugins: { CapacitorUpdater: { defaultChannel: 'v3' // Utilisateurs de la version 3.x } }};Maintenant vous pouvez pousser des mises à jour vers n’importe quelle version :
- Canal
production→ Utilisateurs de la version 1.x - Canal
v2→ Utilisateurs de la version 2.x - Canal
v3→ Utilisateurs de la version 3.x
7. Nettoyage (après migration)
Section titled “7. Nettoyage (après migration)”Une fois que tous les utilisateurs ont migré vers la version 2.x (comptez 3-4 mois) :
- Supprimez
defaultChannelde votre configuration Capacitor - Supprimez le canal v2 :
npx @capgo/cli channel delete v2- Supprimez la branche v1-maintenance :
git branch -d v1-maintenancegit push origin --delete v1-maintenanceTestez toujours les mises à jour soigneusement dans chaque canal avant le déploiement
Maintenir les mises à jour de la version 1.x
Section titled “Maintenir les mises à jour de la version 1.x”Pour envoyer des mises à jour compatibles avec la version 1.x :
- Basculez vers la branche v1-maintenance :
git checkout v1-maintenance- Faites vos modifications et committez :
# Faites des modifications compatibles 1.xgit add .git commit -m "Correction pour v1.x"git push origin v1-maintenance- Compilez et téléversez vers le canal production :
npx @capgo/cli bundle upload --channel production