メインコンテンツへスキップ

段階的なロールアウト

プログレッシブロールアウトでは、チャネルの 安定版フォールバックを提供します をそのままで、別の ロールアウト対象 を制御されたデバイスのサブセットに配信します。ほとんどの本番ユーザーは安定版のままです。ロールアウト対象のユーザーだけが、あなたが ロールアウトを完了 または ロールアウトをロールバック.

Capgo チャネルでの段階的ロールアウト制御
この 段階的ロールアウト チャンネルのInformationタブにあるセクションには、 ロールアウト対象 と 安定版フォールバックパーセンテージコントロール、ロールアウトアクションが表示されます。

Progressive rollout のエンドツーエンドの仕組み

「Progressive Rolloutsのエンドツーエンドの仕組み」セクション

各チャンネルは同時に2つのbundleリンクを持てます:

コンソールラベルAPI / CLI配信対象
安定版フォールバック安定版バンドル (version で Channels POST)チャネル上のすべてのデバイスのうち、 決して ロールアウトコホートに含まれるもの。
ロールアウト対象ロールアウト対象 (rolloutVersion / rollout_version)ロールアウトが有効で、かつ一時停止されていない間、Capgo がロールアウト対象としてランダムに選択したデバイスのみが 対象です。 (一時停止中は除く)

アップデート確認時のプロセス

「アップデート確認時の挙動」セクション
  1. デバイスは、自身のチャンネルのアップデートについて Capgo に問い合わせます。
  2. ロールアウトが 無効である場合、またはターゲットが設定されていない場合、Capgo は 安定版フォールバックを提供します.
  3. ロールアウトが 対象です。 と 一時停止、コホートに属するデバイスは引き続き ロールアウト対象。それ以外のユーザーには 安定版フォールバックを提供します.
  4. ロールアウトが 対象です。 で一時停止されていない場合、Capgo はこのデバイスがロールアウトコホートに属しているかを確認します:
    • コホート内 → ロールアウト対象。
    • コホート外 → 安定版フォールバック。

Capgo は対象となる各デバイスに対してランダムに判定し、デバイスIDとロールアウトIDのハッシュを使って結果をキャッシュします。これによりコホートは スティッキー となり、設定されたキャッシュ期間中は、すべての更新チェック時に再抽選されることはありません。

ロールアウトにはまず安定版フォールバックが必要です。ダッシュボードで、ロールアウト対象を選択する前に安定版バンドルを割り当ててください。 公開チャンネル API、既存のチャネルが供給できます version と rolloutVersion 同じ POST リクエスト内で。

配信を開始するには:

  1. 設定する ロールアウト対象 (または bundle をアップロード/割り当て — 参照 bundle のアップロードと割り当て).
  2. 選択する パーセンテージ をクリックし、 パーセンテージを適用.
  3. クリック ロールアウトを有効化.

ロールアウトを有効にするまで、ターゲットとパーセンテージを設定しても、デバイスが受け取る内容は変わりません。

コンソールでパーセンテージを編集し、 パーセンテージを適用 をクリックして保存します。Capgo は可能な限り既存の決定を保持します:

  • パーセンテージを上げる — すでに選択されているデバイスはそのまま選択されたままです。以前未選択だったデバイスのランダムなサブセットのみが追加されます。
  • パーセンテージを下げる — 選択したコホートのランダムなサブセットが安定版のフォールバックに戻ります。
  • パーセンテージを 0% に設定 — 新しいデバイスは選択されません。有効なロールアウト対象を実行中のデバイスは、無効化、ロールバック、または対象の変更を行うまで、引き続きその対象を受け取ります。
  • ロールアウトを一時停止 — 新しいデバイスの参加を停止しますが、有効な対象を実行中のデバイスはそのまま残ります。
  • ロールアウトを無効化 — ロールアウト対象の解決を停止します。アップデートチェックは安定版のフォールバックを使用します。

bundle のアップロードと割り当て

セクション「bundleのアップロードと割り当て」

チャンネルでは を使用して progressive rolloutが設定されている場合、新しいアップロードとbundleリンクは次に送られます: ロールアウト対象 デフォルトで。 安定版フォールバック 明示的に置き換える選択をしない限り、変更されません。

デフォルトのアップロードルーティング

「デフォルトのアップロードルーティング」セクション
Channelの状態デフォルトのアップロード / 割り当て安定版フォールバックロールアウト対象
いいえ progressive ロールアウトが設定済みチャンネルに配信されるアップロードに設定該当なし
Progressive rollout 設定済みチャンネルに配信される変更なしアップロードに設定
bundle の配信方法安定版フォールバックロールアウト対象備考
bundle upload --channel <name> (追加フラグなし)ロールアウトチャネルでは変更なし; 設定 ロールアウトなしの場合設定 ロールアウトチャネルではコンソールのデフォルト設定と一致します。
bundle upload --channel <name> --rollout <percent>変更なし設定; ロールアウト 対象です。 そのパーセンテージでアップロードして有効化するだけ。
bundle upload --channel <name> --stable置換済み変更なしエスケープハッチ — 意図的に安定版へ置き換える手段。
bundle upload を使用して いいえ --channel変更なし変更なし登録のみ。以下と連携: channel set または API。
コンソールのリンクダイアログ → Auto(推奨)ロールアウトチャネルでは変更なし設定 ロールアウトチャネルではデフォルトの選択です。
コンソールのリンクダイアログ → ロールアウト対象変更なし設定明示的なロールアウト対象
コンソールのリンクダイアログ → Stable を置き換え置換済み変更なしエスケープハッチ
PUT /bundle/ を使用して target: "auto"ロールアウトチャネルでは変更なし設定 ロールアウトチャネルではAPI のデフォルト。
PUT /bundle/ を使用して target: "rollout"変更なし設定明示的なロールアウト対象
PUT /bundle/ を使用して target: "stable"置換済み変更なしエスケープハッチ
channel set --bundle <version>置換済み変更なし明示的な安定版オーバーライド
channel set --rollout-bundle <version> (+ --rollout-percentage, --rollout-enable)変更なし設定済みまたは変更済みアップロードせずにターゲットを設定。
Channels POST version置換済み 設定時変更なし明示的な安定版オーバーライド
Channels POST rolloutVersion変更なし設定済みまたは変更済み 設定時プログラムによるターゲット割り当て。

ロールアウト設定済みチャネルでのデフォルトアップロード(ロールアウト対象、stable は変更なし):

ターミナル
bunx @capgo/cli@latest bundle upload com.example.app \
--path ./dist \
--channel production

アップロードし、ロールアウト対象を設定して 5% で有効化:

ターミナル
bunx @capgo/cli@latest bundle upload com.example.app \
--path ./dist \
--channel production \
--rollout 5

stable を明示的に置き換える:

ターミナル
bunx @capgo/cli@latest bundle upload com.example.app \
--path ./dist \
--channel production \
--stable

リンクせずにアップロードし、ロールアウトを設定します:

ターミナル
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 を明示的なターゲットで割り当て (auto | stable | rollout):

ターミナル
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/

すでに選択されているデバイスを再設定せずに、露出を増やします:

ターミナル
bunx @capgo/cli@latest channel set production com.example.app \
--rollout-percentage 25

使用する --rollout-percentage-bps パーセント単位のステップより細かい制御が必要な場合 (例: 50 = 0.5%).

詳細については、 channel CLI リファレンス と bundle CLI リファレンス すべてのロールアウトオプションに対応。コンソールUXは capgo.app#3313 に搭載されています.

Progressive rollout セクション(dashboard)

「Progressive rollout section (dashboard)」セクション

アプリを開く → チャンネル → チャネルを選択 → 情報 → 段階的ロールアウト.

セクションの表示内容: ロールアウト対象 と 安定版フォールバック 2つのバンドルリンクに使用します。 ロールアウト対象を変更 別の候補バンドルを選択します。パーセンテージを編集した後、 パーセンテージを適用 をクリックして保存します。

コントロール仕組みすでにコホートに含まれているデバイス新規対象デバイス
ロールアウト対象を変更設定します rolloutVersion。変更すると新しいロールアウトIDと新しいコホートが開始されます。チャネル(デフォルト)にバンドルをアップロードまたは割り当てても、ロールアウト対象が設定されます。前回の対象を保持し、再度チェックインして新しい判定ルールに一致するまでそのままにします。新しい対象に対する割合で選択されます。
パーセンテージを適用入力した割合を保存します。増加時は保持されます。減少時はランダムなサブセットが除外される場合があります。上記の割合ルールに基づいて追加または除外されます。
ロールアウトを有効化設定された対象と割合でロールアウト配信を有効にします。次の更新チェックまで、即座の変更はありません。次のチェックで選択される可能性があります。
ロールアウトを一時停止新しいデバイスの流入を停止します。ロールアウト対象を維持します。安定したフォールバックを受信します 次回のチェック時に。
ロールアウトを再開一時停止を解除します。変更ありません。次のチェックで再び選択される可能性があります。
ロールアウトを無効化ロールアウト対象の解決を停止します。Capgo はすべてのユーザーに対して安定版フォールバックを使用します。安定版フォールバックに切り替え 次回のチェック時に。安定版フォールバックを受け取る。
ロールアウトを完了 (API: promoteToStable; CLI: --rollout-promote)ロールアウト対象を新しい安定版フォールバックに設定し、ロールアウト状態をクリアします。確認者: プログレッシブロールアウトを完了しますか? — 対象が全員にとって安定版になり、以前の安定版フォールバックが置き換えられ、パーセンテージがリセットされます。全員の安定版フォールバックに なる。完了したバンドルを 安定版として受け取る。
ロールアウトをロールバック (API: rollback; CLI: --rollout-rollback)ターゲットをクリアし、ロールアウトを無効化、パーセンテージを0%にリセットして、デバイスを安定版フォールバックに戻します。安定版フォールバックに戻す 次回のチェック時に。安定版フォールバックを受け取る。

終了アクションは一度に1つだけ使用してください(ロールアウトを完了 と ロールアウトをロールバック 1回の API 呼び出しでは組み合わせられません):

ターミナル
# 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

ロールアウト対象のバンドルを削除されないよう、 ロールアウトを完了 または ロールアウトをロールバック。安定フォールバックまたはロールアウト対象としてリンクされたバンドルは、削除から保護されます。

Progressive rollout は、チャネル全体を一度に切り替えることなく、本番環境で検証できるように設計されています。実用的な手順:

  1. 安定したフォールバックが正常であることを確認します。 大多数のユーザーに提供し続けることを許容できるバージョンであるべきです。
  2. 候補バージョンをアップロードします ロールアウト設定済みのチャネル(bundle upload --channel <name> に反映され、 ロールアウト対象 は変更されません)に、または 安定版フォールバック を使用します --rollout <small-percent> 同じステップで公開を有効にします。
  3. 小規模から開始します — 最初のシグナルには 1〜5% で十分です。クリックします パーセンテージを適用、次に ロールアウトを有効化. 失敗率が急増したときに Capgo の公開を止めたい場合は、auto-pause をオンにしてください。
  4. 展開範囲を広げる前にモニタリングしましょう。 使用する Observe でバージョンの健全性と ログ分析 エラーパターンを確認し、チャンネルの 履歴 タブで設定変更を確認してください。ロールアウト対象と安定版フォールバックを比較し、コホートが健全に見えるまでパーセンテージを上げないでください。
  5. 段階的に増やす — パーセンテージを編集し、クリック パーセンテージを適用、段階的に拡大します(例: 5% → 25% → 50% → 100%)。Capgo は、割合を上げた際に、すでにコホートに属しているデバイスをそのまま維持します。
  6. 確信が持てたらロールアウトを完了 — 確認 プログレッシブロールアウトを完了しますか? 候補バージョンを全ユーザーの安定フォールバックにします。
  7. 問題があれば、まずロールアウトを一時停止 — 調査中に新しいデバイスへの展開を停止します。不良ビルドに適用済みのデバイスは、あなたが ロールアウトをロールバック または ロールアウトを無効化.

自動一時停止ポリシー

「Auto-pause ポリシー」セクション

Capgo は、有効なロールアウトを5分ごとに評価し、失敗シグナルが設定した閾値を超えた時点でアクションを実行できます。選択したチャンネルと時間枠でロールアウト対象のインストール数と失敗数を計測し、単純な失敗率ではなく Wilson 信頼区間の下限を使って判断します。

Auto-pause はデフォルトで無効です。チャンネルの以下のフィールドで設定します。 情報 タブまたは channel set:

  • 失敗率のしきい値 ベーシスポイント(500 = 5%)。ポリシーをトリガーするにはしきい値が必要です。
  • ウィンドウ 分単位(デフォルト: 60)。
  • 信頼度 の間 0 と 1 (デフォルト: 0.95).
  • 任意の最小試行回数と失敗回数(サンプルが少なすぎる場合の誤作動を防ぐため)。
  • クールダウン 分(デフォルト: 60)で、同じアクションの繰り返しを防ぎます。
  • アクション: pause, rollback、または notify.

pause 新しいロールアウトの公開を停止し、 rollback ターゲットをクリアして安定したフォールバックに戻し、 notify ロールアウトの配信を変えずに、ロールアウトのアラートを送信します。

ターミナル
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

API と dashboard へのエントリーポイント

セクション「API とダッシュボードのエントリポイント」
  • ダッシュボード: アプリ → チャンネル → channel → 情報 → 段階的ロールアウト
  • API のチャンネル: 公開チャンネル API ロールアウトのフィールド、プロモート、ロールバック用
  • API の Bundle 割り当て: PUT /bundle/ を使用して target: auto, stable、または rollout

一般的なチャンネルルーティングとデバイスの優先順位については、こちらを参照 チャンネル. プログレッシブロールアウト以外で緊急にbundleを復旧する場合は、以下を参照してください: live update のロールバック.