Passer à la navigation

Flux de travail Native + OTA Channel Workflow

Une configuration Capgo courante utilise un canal de développement canal de production canal de production le canal. Les CI téléchargent chaque paquet OTA à dev, puis promeuvent à production lorsque vous êtes prêt. Les équipes ajoutent souvent --fail-on-incompatible afin que CI ne puisse pas envoyer une mise à jour en direct qui nécessite de nouveaux code natifs par accident.

Cette page répond à la question suivante : qu'est-ce que vous faites lorsque vous intentionnellement avez besoin d'un paquet incompatible avec les packages natifs actuels du canal ?

Si vous avez besoin du contexte sur pourquoi Capgo compare les packages natifs, commencez par Compatibilité native. Pour une branche CI complète qui choisit automatiquement OTA vs Capgo Build, voir Auto OTA ou Native.

Cette guide suppose l'existence de dev et production Créez-les d'abord si nécessaire : les canaux existent déjà.

Fenêtre de terminal
npx @capgo/cli@latest channel add production com.example.app
npx @capgo/cli@latest channel add dev com.example.app
CanalQui le reçoitTéléversement typique
devConstructions internes / QATous les CI push de JS (et les baselines natives intentionnelles)
productionUtilisateurs du magasinSeuls les versions mises à jour sont promues ou chargées lorsque la version est prête

--fail-on-incompatible est une bonne valeur par défaut sur les deux canaux pour tous les téléchargements OTA quotidiensIl compare les packages natifs du bundle que vous êtes en train de télécharger avec le bundle actuellement en ligne sur ce canalSi ils diffèrent, le téléchargement se termine avec un code d'erreur et rien ne sera envoyé

Téléchargement OTA quotidien (garder le drapeau)

Section intitulée “Téléchargement OTA quotidien (garder le drapeau)”

Lorsque la modification est uniquement en JavaScript et que les packages natifs correspondent au canal :

Fenêtre de terminal
npx @capgo/cli@latest bundle upload com.example.app \
--channel production \
--fail-on-incompatible \
--auto-min-update-version

--fail-on-incompatible drifte vers une version native par inadvertance. --auto-min-update-version est requis à chaque téléchargement dès que le canal utilise la stratégie (recommandée ci-dessous). Si le canal n'est pas encore configuré, vous pouvez omettre metadata jusqu'à ce que vous le configurez. metadata Porte-à-porte obligatoire avant le téléchargement : --auto-min-update-version Fenêtre de terminal

Copier dans le presse-papier

Bump de version native intentionnel (supprimez le flag une fois)
npx @capgo/cli@latest bundle releaseType com.example.app --channel production
# → OTA safe to upload with --fail-on-incompatible
# → native stop; ship a native binary first (see below)

ne pouvez pas blocks accidental native drift. téléchargez un bundle qui nécessite une nouvelle native code tout en gardant --fail-on-incompatibleCela existe pour bloquer exactement ce cas. Lorsqu'un plugin, Capacitor version, ou autre dépendance native a changé intentionnellement :

  1. Envoyez le binôme correspondant binnaire natif (App Store / Play Store, ou Capgo Build).
  2. Téléchargez le bundle JS correspondant sans --fail-on-incompatible.
  3. Préférez --auto-min-update-version avec le canal sur la metadata stratégie afin que les appareils toujours sur l'ancien binôme ne reçoivent pas le nouveau bundle jusqu'à ce qu'ils installent la nouvelle application.
  4. Après cela, téléchargez --fail-on-incompatible retour sur OTA CI normal (et maintenez --auto-min-update-version tandis que le canal reste sur metadata).
  1. Une fois par canal : activer la mise en cache de métadonnées

    Fenêtre de terminal
    npx @capgo/cli@latest channel set production com.example.app --disable-auto-update metadata

    Répétez pour dev si ce canal reçoit également des baselines natives intentionnelles. Après ce basculement, chaque téléchargement vers le canal doit inclure --auto-min-update-version ou --min-update-version.

  2. contexte : fragment de texte HTML d'une chaîne de Capgo UI plus longue (clé parente `alternatives_cta_questions`). Page/zone : page de comparaison des alternatives de mise à jour live de Capacitor. Rôle : long paragraphe de marketing ou juridique. Vu dans : page alternatives.astro. Conservez les termes de produit et de marque de Capgo ainsi que les termes de développeur exactement. Clé de message `alternatives_cta_questions` (Questions de CTA Alternatives). | Fragment de texte HTML d'une chaîne de Capgo UI plus longue (clé parente `appflow_cta_questions`). Page/zone : page de comparaison/migration de marketing de Appflow. Rôle : long paragraphe de marketing ou juridique. Vu dans : page ionic-appflow.astro. Conservez les termes de produit et de marque de Capgo ainsi que les termes de développeur exactement. Clé de message `appflow_cta_questions` (Questions de CTA Appflow). | Fragment de texte HTML d'une chaîne de Capgo UI plus longue (clé parente `capwesome_cta_questions`). Page/zone : page de comparaison de Capawesome. Rôle : long paragraphe de marketing ou juridique. Vu dans : page capwesome.astro. Conservez les termes de produit et de marque de Capgo ainsi que les termes de développeur exactement. Clé de message `capwesome_cta_questions` (Questions de CTA Capwesome). | Page/zone : page de services de consulting. Rôle : sous-titre ou tagline de section. Vu dans : page consulting.astro. Conservez les termes de produit et de marque de Capgo ainsi que les termes de développeur exactement. Clé de message `consulting_faq_subtitle` (Sous-titre FAQ de consulting). | Page/zone : page de comparaison/migration de marketing de Appflow. Rôle : étiquette de navigation ou élément de navigation court. Vu dans : page ionic-appflow.astro, page ionic-enterprise-plugins.astro, page solutions/ionic-enterprise-plugins.astro. Clé de message `appflow_plugins_or` (Appflow Plugins Ou).

    Envoyez le binôme natif

  3. Construire et soumettre l'application iOS/Android qui inclut les nouveaux plugins ou les modifications natives. Jusqu'à ce que les utilisateurs installent ce binôme, ils ne peuvent pas exécuter en toute sécurité un bundle qui dépend de ces packages natives. --fail-on-incompatible)

    Télécharger le basculement OTA correspondant (pas de « ci-dessous » : pas de mise en cache de métadonnées de l'application native).
    npx @capgo/cli@latest bundle upload com.example.app \
    --channel production \
    --auto-min-update-version

    Cela enregistre les nouveaux packages natifs sur le canal. Plus tard bundle releaseType / --fail-on-incompatible les vérifications utilisent ce point de référence.

  4. Rétablir les téléchargements OTA protégés

    Les sorties JS uniquement utilisent à nouveau les deux drapeaux :

    Fenêtre de terminal
    npx @capgo/cli@latest bundle upload com.example.app \
    --channel production \
    --fail-on-incompatible \
    --auto-min-update-version

Peut-on conserver --fail-on-incompatible et pousser quand même un paquet incompatible avec la plateforme native ?

Section intitulée « Peut-on conserver --fail-on-incompatible et pousser quand même un paquet incompatible avec la plateforme native ? »

Non. Si les packages natifs de l'upload diffèrent du paquet live du canal, la flag fait échouer la commande intentionnellement. Pour une mise à niveau native intentionnelle, omettez la flag sur cet upload (et utilisez --auto-min-update-version Quand vous le pouvez).

Est-ce que l'upload sans la flag une fois est la bonne approche ?

Section intitulée « Est-ce que l'upload sans la flag une fois est la bonne approche ? »

Oui. C'est la méthode supportée pour faire avancer la base de la plateforme native du canal après que vous ayez expédié un nouveau binaire. Conservez la flag sur chaque autre OTA upload afin que la dérive native accidentelle échoue toujours la CI.

Je dois-t-il télécharger vers le dev en premier, puis la production ? dev Premièrement, puis production?

Section intitulée « Je dois-t-il télécharger vers le dev en premier, puis la production ? »

Oui, si cela correspond à votre processus. Exécutez les mêmes règles par canal : la vérification de compatibilité est effectuée par rapport à ce qui est en ligne sur le canal cible. Promouvez ou rétéléchargez vers production seulement après dev semble bien, et utilisez une mise à jour native de base (sans --fail-on-incompatible) sur chaque canal qui nécessite les nouveaux paquets natives enregistrés.

Qu'est-ce que je fais si je télécharge le nouveau bundle natif avec le flag toujours activé ?

Section intitulée « Qu'est-ce que je fais si je télécharge le nouveau bundle natif avec le flag toujours activé ? »

La CI faille et Capgo ne démarre pas cette mise à jour. C'est l'issue attendue. Soit la modification était accidentelle (corrigez les paquets natifs et réessayez en tant qu'OTA), soit elle était intentionnelle (utilisez la voie native ci-dessus).

CheminLorsqueTélécharger des drapeaux
OTASeulement JavaScript; les packages natifs correspondent au canal--fail-on-incompatible + --auto-min-update-version (obligatoire si le canal est sur metadata)
Nouveau binôme natif + bundle JS correspondantNon ; garder --fail-on-incompatibleNative baseline --auto-min-update-version

Référence pour l'upload, la compatibilité, le type de version et les drapeaux liés.

Section intitulée « Continuez à partir du workflow Native + OTA Channel »

Si vous utilisez Native + OTA Channel Workflow pour garder les mises à jour en direct en sécurité à travers les versions natives, connectez-l’avec Native Compatibility pour les règles de comparaison de package Auto OTA ou Native pour le branching CI Version Cible context : Page/zone : page de marketing de solutions Capgo. Rôle : Titre de section ou de page. Vu dans : page solutions/version-targeting.astro. Message clé `solutions_version_targeting_title` (Titre des solutions de versionnement). | Page/zone : page de marketing de solutions Capgo. Rôle : Étiquette de navigation ou élément UI court. Vu dans : page solutions/version-targeting.astro. Message clé `solutions_version_targeting` (Versionnement des solutions) Capgo CLI bundle reference __CAPGO_KEEP_0__ __CAPGO_KEEP_1__ référentiel de bundle