Aller au contenu

Déploiements progressifs

Un déploiement progressif maintient en place le fallback stable d'un canal tout en livrant une cible de déploiement à un sous-ensemble contrôlé d’appareils. La majorité des utilisateurs en production restent sur la version stable. Seule la cohorte de déploiement reçoit la version candidate jusqu’à ce que Terminer le déploiement ou Rollback du déploiement.

Contrôles de déploiement progressif dans une section Capgo
Le Déploiement progressif de l'onglet Information d'un canal affiche Cible du déploiement et Fallback stable, le contrôle du pourcentage et les actions de déploiement.

Chaque canal peut avoir deux liens de bundle simultanément :

Étiquette de consoleAPI / CLIDestinataires
Fallback stableBundle stable (version sur POST des canaux)Chaque appareil du canal qui est pas dans la cohorte de déploiement.
Cible du déploiementCible du déploiement (rolloutVersion / rollout_version)Seuls les appareils que Capgo sélectionne aléatoirement pour le groupe de déploiement pendant que le déploiement activé et non en pause.
  1. L’appareil demande à Capgo une mise à jour sur son canal.
  2. Si le déploiement est désactivé, ou s’il n’y a pas de cible, Capgo sert la fallback stable.
  3. Si le déploiement progressif est activé et en pause, les appareils déjà dans la cohorte conservent la cible de déploiement ; tous les autres reçoivent fallback stable.
  4. Si le déploiement progressif est activé et non en pause, Capgo vérifie si cet appareil fait partie de la cohorte de déploiement :
    • Dans la cohorte → cible du déploiement.
    • Hors du cohort → repli stable.

Capgo prend une décision aléatoire pour chaque appareil éligible, puis la met en cache à l’aide d’un hash de l’ID de l’appareil et de l’ID du déploiement. Cela rend le cohort sticky pour la durée de cache configurée, au lieu de re-déployer à chaque vérification de mise à jour.

Activer un déploiement progressif

Section intitulée « Activer un déploiement »

Un déploiement nécessite d’abord un repli stable. Dans le dashboard, assignez le bundle stable avant de choisir la cible du déploiement. Avec le Canaux publics API, un canal existant peut fournir version et rolloutVersion dans la même requête POST.

Pour démarrer la livraison :

  1. Fixez le Cible du déploiement (ou envoyer/assigner un bundle — voir Envoyer et assigner des bundles).
  2. Choisissez un pourcentage et cliquez sur Appliquer le pourcentage.
  3. Cliquez Activer le déploiement progressif.

Jusqu’à l’activation du déploiement progressif, la configuration d’une cible et d’un pourcentage ne modifie pas les appareils concernés.

Dans la console, modifiez le pourcentage et cliquez sur Appliquer le pourcentage pour l’enregistrer. Capgo conserve les décisions existantes lorsque c’est possible :

  • Augmenter un pourcentage — les appareils déjà sélectionnés le restent ; seul un sous-ensemble aléatoire d’appareils précédemment non sélectionnés est ajouté.
  • Diminuer un pourcentage — un sous-ensemble aléatoire de la cohorte sélectionnée revient au fallback stable.
  • Réglez le pourcentage à 0 % — aucun nouvel appareil n'est sélectionné. Les appareils qui utilisent déjà la cible de déploiement progressif activée continuent de recevoir cette cible jusqu'à ce que vous la désactiviez, fassiez un rollback ou changiez de cible.
  • Suspendre le déploiement progressif — empêche les nouveaux appareils d'y accéder, tandis que ceux qui utilisent déjà la cible activée y restent.
  • Désactiver le déploiement progressif — stops resolving the rollout target; update checks use the stable fallback.

Sur les canaux par déploiement progressif configuré, les nouveaux uploads et liens de bundle sont envoyés vers le cible de déploiement par défaut. Fallback stable reste inchangé, sauf si vous choisissez explicitement de le remplacer.

État du canalUpload / assignation par défautFallback stableCible du déploiement
Non déploiement progressif configuréAtterri sur le canalDéfini sur l’uploadN/A
Déploiement progressif configuréAtterri sur le canalInchangéDéfini sur l’upload
Comment vous déployez le bundleFallback stableCible du déploiementNotes
bundle upload --channel <name> (aucun flag supplémentaire)Inchangé sur les canaux de déploiement progressif ; configurer lorsqu'aucun déploiement progressif n'est actifDéfinissez sur les canaux de déploiement progressifCorrespond au défaut de la console.
bundle upload --channel <name> --rollout <percent>InchangéDéfinissez; rollout activé à ce pourcentageUpload en une étape + activation.
bundle upload --channel <name> --stableRemplacéInchangéFilet de sécurité — remplacement stable intentionnel.
bundle upload par non --channelInchangéInchangéEnregistrement uniquement ; associer avec channel set ou API.
Boîte de dialogue de lien console → Auto (recommandé)Inchangé sur les canaux de déploiementDéfinissez sur les canaux de déploiement progressifChoix par défaut.
Boîte de dialogue de lien console → Cible du déploiementInchangéDéfinissezCible de déploiement explicite.
Boîte de dialogue de lien console → Remplacer la version stableRemplacéInchangéFile de secours.
PUT /bundle/ par target: "auto"Inchangé sur les canaux de déploiementDéfinissez sur les canaux de déploiement progressifpar défaut de API.
PUT /bundle/ par target: "rollout"InchangéDéfinissezCible de déploiement explicite.
PUT /bundle/ par target: "stable"RemplacéInchangéSolution de repli.
channel set --bundle <version>RemplacéInchangéOverride stable explicite.
channel set --rollout-bundle <version> (+ --rollout-percentage, --rollout-enable)InchangéDéfini ou modifiéConfigurer la cible sans upload.
Canaux POST versionRemplacé when setInchangéOverride stable explicite.
Canaux POST rolloutVersionInchangéDéfini ou modifié when setAffectation programmatique des cibles.

Upload par défaut sur un canal configuré pour un rollout (cible du rollout ; stable inchangé) :

Fenêtre de terminal
bunx @capgo/cli@latest bundle upload com.example.app \
--path ./dist \
--channel production

Upload, définition de la cible du rollout et activation à 5 % :

Fenêtre de terminal
bunx @capgo/cli@latest bundle upload com.example.app \
--path ./dist \
--channel production \
--rollout 5

Remplacer explicitement la version stable :

Fenêtre de terminal
bunx @capgo/cli@latest bundle upload com.example.app \
--path ./dist \
--channel production \
--stable

Envoyez sans lien, puis configurez le déploiement progressif :

Fenêtre de terminal
bunx @capgo/cli@latest bundle upload com.example.app --path ./dist -b 1.3.0
bunx @capgo/cli@latest channel set production com.example.app \
--rollout-bundle 1.3.0 \
--rollout-percentage 5 \
--rollout-enable

API assigner avec une cible explicite (auto | stable | rollout):

Fenêtre de terminal
curl -X PUT \
-H "authorization: your-api-key" \
-H "Content-Type: application/json" \
-d '{
"app_id": "com.example.app",
"version_id": 456,
"channel_id": 789,
"target": "rollout"
}' \
https://api.capgo.app/bundle/

Augmentez l'exposition sans réassigner les appareils déjà sélectionnés :

Fenêtre de terminal
bunx @capgo/cli@latest channel set production com.example.app \
--rollout-percentage 25

Utiliser --rollout-percentage-bps quand vous avez besoin de paliers plus fins que des pourcentages entiers (par exemple 50 = 0.5%).

Consultez le référence du canal CLI et référence du bundle CLI for every rollout option. Console UX ships in capgo.app#3313.

Ouvrir une app → Canaux → choisir le canal → Informations → Déploiement progressif.

La section affiche Cible du déploiement et Fallback stable pour les deux liens de bundle. Utilisez Modifier la cible du déploiement progressif pour choisir un autre bundle candidat. Après avoir modifié le pourcentage, cliquez sur Appliquer le pourcentage pour l’enregistrer.

ContrôleCe qu’il faitAppareils déjà dans la cohorteNouveaux appareils éligibles
Modifier la cible du déploiementDéfinit rolloutVersion. Le modifier crée un nouvel ID de rollout et une nouvelle cohorte. L'upload ou l'affectation d'un bundle au canal (par défaut) définit aussi la cible du rollout.Conservez la cible précédente jusqu'à ce qu'ils se reconnectent et correspondent aux nouvelles règles de décision.Sélectionné selon le pourcentage appliqué à la nouvelle cible.
Appliquer le pourcentageEnregistre le pourcentage saisi.Préservé lors d'une augmentation ; un sous-ensemble aléatoire peut être retiré lors d'une diminution.Ajouté ou exclu selon les règles de pourcentage ci-dessus.
Activer le déploiement progressifActive la diffusion du rollout pour la cible et le pourcentage configurés.No immediate change until the next update check.May be selected on the next check.
Suspendre le déploiement progressifEmpêche les nouveaux appareils de rejoindre.Rester sur la cible du déploiement.Recevoir la version stable de secours au prochain contrôle.
Reprendre le déploiementLève la pause.Inchangé.Peut être sélectionné à nouveau lors du prochain contrôle.
Désactiver le déploiement progressifArrête la résolution de la cible du déploiement ; Capgo utilise la version stable de secours pour tout le monde.Passer à la version stable de secours au prochain contrôle.Recevoir la version stable de secours.
Terminer le déploiement (API: promoteToStable; CLI: --rollout-promote)Définit la nouvelle version stable comme fallback par défaut, puis réinitialise l'état du déploiement. Confirmé par Terminer le déploiement progressif ? — la cible devient stable pour tout le monde, l'ancienne version stable de secours est remplacée et le pourcentage est réinitialisé.Devenir la version stable de secours pour tous.Recevoir le bundle finalisé comme stable.
Rollback du déploiement (API: rollback; CLI: --rollout-rollback)Efface la cible, désactive le déploiement progressif, remet le pourcentage à 0 % et renvoie les appareils vers la version stable.Revenir à la version stable de secours au prochain contrôle.Recevoir la version stable de secours.

Utilisez une action terminale à la fois (Terminer le déploiement et Rollback du déploiement ne peuvent pas être combinés dans un seul appel API) :

Fenêtre de terminal
# Stop adding devices while you investigate
bunx @capgo/cli@latest channel set production com.example.app --rollout-pause
# Allow new devices to enter again
bunx @capgo/cli@latest channel set production com.example.app --rollout-resume
# Complete rollout — candidate becomes stable for everyone
bunx @capgo/cli@latest channel set production com.example.app --rollout-promote
# Rollback rollout — discard candidate and return to stable
bunx @capgo/cli@latest channel set production com.example.app --rollout-rollback

Gardez le bundle cible du rollout disponible jusqu'à ce que vous Terminer le déploiement ou Rollback du déploiement. Les bundles liés en tant que fallback stable ou cible de rollout sont protégés contre la suppression.

Le déploiement progressif est conçu pour vous permettre de valider en production sans basculer l'ensemble du canal d'un coup. Une séquence pratique :

  1. Vérifiez que le repli stable est opérationnel. Elle doit correspondre à la version que vous souhaitez continuer à servir à la majorité des utilisateurs.
  2. Envoyez la version candidate vers le canal de déploiement progressif (bundle upload --channel <name> arrive sur Cible du déploiement et laisse Fallback stable tranquille) ou utilisez --rollout <small-percent> pour activer l'exposition dans la même étape.
  3. Commencez petit — 1 à 5 % suffisent pour un premier signal. Cliquez sur Appliquer le pourcentage, puis Activer le déploiement progressif. Activez la pause automatique si vous voulez que Capgo arrête l'exposition lorsque les taux d'échec grimpent.
  4. Surveillez avant d'élargir. Utiliser Observe pour la santé de la version, Analyse des logs pour les motifs d'erreur, et l'onglet Canal Historique pour les changements de configuration. Comparez la cible du déploiement avec la version stable de secours ; n'augmentez pas le pourcentage tant que la cohorte ne semble pas saine.
  5. Augmenter progressivement — modifiez le pourcentage, cliquez Appliquer le pourcentage, et augmentez progressivement (par exemple 5 % → 25 % → 50 % → 100 %). Capgo conserve les appareils déjà dans la cohorte sélectionnée lorsque vous augmentez le pourcentage.
  6. Finaliser le déploiement progressif une fois confiant — confirmer Terminer le déploiement progressif ? afin que la version candidate devienne le fallback stable pour tous.
  7. En cas de problème, mettez d’abord le déploiement en pause — arrête la nouvelle exposition pendant que vous investigatez. Les appareils déjà sur le build défectueux y restent jusqu’à ce que vous Rollback du déploiement ou Désactiver le déploiement progressif.

Capgo peut évaluer un déploiement actif toutes les cinq minutes et agir lorsque son signal d’échec dépasse votre seuil. Il mesure les installations et les échecs pour la cible du déploiement dans le canal et la fenêtre de temps sélectionnés, puis utilise une borne inférieure de confiance de Wilson plutôt que le simple taux d’échec brut.

La pause automatique est désactivée par défaut. Configurez ces champs dans l’onglet du canal Informations ou avec channel set:

  • Seuil du taux d’échec en points de base (500 = 5 %). Un seuil est nécessaire pour déclencher la politique.
  • Fenêtre en minutes (par défaut : 60).
  • Confiance entre 0 et 1 (par défaut : 0.95).
  • Nombre minimal d’essais et d’échecs optionnel, pour éviter de réagir sur de trop petits échantillons.
  • Délai d’attente en minutes (par défaut : 60), ce qui empêche les actions répétées.
  • Action: pause, rollback, ou notify.

pause arrête l'exposition du nouveau déploiement progressif, rollback supprime la cible et revient à la version stable de secours, et notify envoie une alerte de déploiement sans modifier la diffusion du rollout.

Fenêtre de terminal
bunx @capgo/cli@latest channel set production com.example.app \
--auto-pause-enabled \
--auto-pause-failure-rate-bps 500 \
--auto-pause-window-minutes 60 \
--auto-pause-confidence 0.95 \
--auto-pause-min-attempts 100 \
--auto-pause-min-failures 5 \
--auto-pause-action pause \
--auto-pause-cooldown-minutes 120
  • Dashboard : app → Canaux → canal → Informations → Déploiement progressif
  • Canaux API : Canaux publics API pour les champs de rollout, promote et rollback
  • Assignation du bundle API : PUT /bundle/ par target: auto, stable, ou rollout

Pour le routage général des canaux et la priorité des appareils, consultez Canaux. Pour une récupération d'urgence de bundle en dehors d'un déploiement progressif, consultez Effectuer un rollback d'un live update.