跳过内容

复制页面选项

渐进式发布会保留一个渠道的 稳定fallback 在交付一个单独的 进展式发布 向受控设备子集 大多数生产用户保持稳定。只有发布协作才能接收候选者,直到您 完成发布 或.

渐进式发布控制在一个Capgo频道
回滚发布 进展式发布控制在一个__CAPGO_KEEP_0__频道 这个 进展式发布 and 发布目标和,百分比控制和滚动操作。

如何进行渐进式发布的端到端工作

标题:如何进行渐进式发布的端到端工作

每个频道可以同时有两个捆绑链接:

控制台标签API / CLI谁接收到它
稳定fallback稳定捆绑(version 在 频道POST)频道内的每台设备 不在 不在发布版本的群组。
发布目标发布目标 (rolloutVersion / rollout_version)只有设备 Capgo 在发布期间随机选择进入发布版本群组。 启用 并且没有暂停。

每次更新检查发生什么

标题:每次更新检查发生什么
  1. 设备询问 Capgo 是否有更新。
  2. 如果发布被 禁用或没有目标,Capgo服务于 稳定fallback.
  3. 如果滚动发布 启用 和 暂停设备已经加入的群组保留 滚动发布目标;其他人则接收 稳定fallback.
  4. 如果滚动发布 启用 并且没有暂停,Capgo检查这个设备是否在发布版群中:
    • 在群中 →发布目标。
    • 不在群中 →稳定fallback。

Capgo为每个符合条件的设备做出随机决定,然后使用设备ID和发布ID的哈希值将其缓存。这样做使发布版群 黏性 在配置的缓存持续时间内而不是在每次更新检查时重新发布。

一个发布需要一个稳定的fallback。 在控制台中,首先分配稳定的包,然后选择发布目标。 Public Channels API,一个现有的频道可以提供 version 和 rolloutVersion context:Capgo营销网站. 角色:短UI标签或导航项. 见于:页面trust.astro. 消息键`and` (And).

在同一个POST请求中。

  1. 开始交付: 设置 发布目标 (或上传/分配一个包 — 见).
  2. 上传和分配包裹s 百分比 并点击 应用百分比.
  3. 点击 启用发布.

直到您启用发布,配置目标和百分比不会改变接收设备的内容。

在控制台中,编辑百分比并点击 应用百分比 以保存它。Capgo 在可以的情况下保留现有的决策:

  • 增加百分比 —— 已选设备保持选中状态;仅随机添加之前未选中的设备的子集。
  • 降低百分比 —— 已选设备子集中的随机设备返回到稳定fallback。
  • 设置百分比为0% —— 不会选择新的设备。已启用滚动目标的设备继续接收该目标,直到您禁用、回滚或更改目标。
  • 暂停滚动 —— 停止新设备进入,同时已运行启用目标的设备继续接收该目标。
  • 禁用滚动 —— 停止分配滚动目标;更新检查使用稳定fallback。

上传并分配包

上传和分配包

在频道上 与 配置了渐进式发布,新上传和包链接默认都会发送到 发布目标 。 稳定版本 除非您明确选择替换它,否则不会改变。

应用于不通过 __CAPGO_KEEP_0__ 上传的默认上传路由稳定fallback进展式发布目标
否 已配置进展式发布落地于频道设置为上传实时更新
进展式发布已配置落地于频道未变更设置为上传

CLI 和 API 路径

CLI 和 API 路径
如何分发捆绑包稳定fallback滚动目标备注
bundle upload --channel <name> (无额外标志)在滚动频道上保持不变; 设置 当没有滚动时设置 在滚动频道上与控制台默认匹配。
bundle upload --channel <name> --rollout <percent>未改变设置在达到该百分比时启用 逐步发布 启用一步上传+启用
bundle upload --channel <name> --stable替换未改变意图稳定替换
bundle upload 无 替换 --channel未改变Unchanged仅注册; 与 channel set 或 API。
控制台链接对话框 → 自动(推荐)在发布频道上保持不变设置 在发布频道上默认选择
控制台链接对话框 → 发布目标Unchanged设置明确的发布目标
控制台链接对话框 → 替换稳定已替换未变更逃生门.
PUT /bundle/ 与 target: "auto"未变更的发布渠道设置 在发布渠道API 默认值。
PUT /bundle/ 与 target: "rollout"未变设置明确的发布目标。
PUT /bundle/ 与 target: "stable"替换未变逃生门。
channel set --bundle <version>替换Unchanged显式稳定覆盖
channel set --rollout-bundle <version> (+ --rollout-percentage, --rollout-enable)Unchanged设置或更改配置目标不上传
Channels POST version替换 设置时Unchanged显式稳定覆盖
Channels POST rolloutVersionUnchanged设置或更改 当设置程序化目标分配。

默认上传到一个已配置的渠道(发布目标;稳定未变):

终端窗口
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

显式替换稳定:

终端窗口
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%).

查看 CLI频道参考 并 CLI包参考 每个发布选项 capgo.app#3313.

进展发布部分(仪表盘)

进展发布部分(仪表盘)

打开应用程序 → 频道 → 选择频道 → 信息 → 渐进式发布.

该部分显示 发布目标 和 稳定fallback 用于两个捆绑包链接。使用 更改发布目标 来选择一个不同的候选捆绑包。编辑百分比后,点击 应用百分比 保存它。

控制它做了什么已经加入的设备新符合条件的设备
改变发布目标集合 rolloutVersion改变它会启动一个新的发布ID和一个新的集合。上传或分配一个包到通道(默认)也会设置发布目标。保持之前的目标直到他们再次检查并符合新的决策规则。根据新目标百分比选择的
应用百分比保存您输入的百分比在增加时保留;在减少时可能会丢弃随机子集根据上述百分比规则添加或排除
启用发布开启发布分发给配置的目标和百分比。下一次更新检查前不会立即发生变化。可能在下一次检查时被选中。
暂停发布停止新设备进入。继续发布目标。在下一次检查时接收稳定fallback。 恢复发布
清除暂停。未改变。下一次检查时。下次检查时可能再次被选中。
关闭发布停止解析发布目标;Capgo为所有人使用稳定fallback。切换到稳定fallback 下次检查时接收稳定fallback。
发布完成 (API: promoteToStable; CLI: --rollout-promote)将发布目标设置为新的稳定fallback,然后清除发布状态。确认由 发布进展完成吗? ——目标变为稳定,所有人都可用,之前的稳定fallback被替换,百分比重置。成为稳定fallback 对所有人有效。接收完成的捆绑包 作为稳定。
回滚发布 (API: rollback; CLI: --rollout-rollback)清除目标,禁用发布,重置百分比为0%,并将设备返回到稳定fallback。返回稳定fallback 在下一次检查时。接收稳定fallback。

使用一个终端操作一次(完全发布 和 回滚发布 无法在单个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

保持发布目标包裹可用直到你 完全发布 或 回滚发布发布目标包裹将保持可用,直到你

进阶发布是为了让您在生产环境中验证而不需要一次性切换整个频道。一个实际的顺序:

  1. 确认稳定fallback是健康的。 它应该是您愿意继续为大多数用户提供的版本。
  2. 上传候选版本 到发布配置的频道(bundle upload --channel <name> 落地于 发布目标 并离开 稳定fallback 单独)或使用 --rollout <small-percent> 来启用在同一步骤中暴露。
  3. 开始小规模 — 1–5% 的信号量足够。点击 应用百分比,然后 启用滚动启用自动暂停,如果你想在失败率飙升时让Capgo停止暴露。
  4. 监控前先扩大。 使用 观察 版本健康 日志洞察 错误模式,和渠道 历史 配置变更的标签页。比较滚动目标与稳定fallback;不要提高百分比,直到小组看起来健康。
  5. 逐渐增加 — 编辑百分比,点击 应用百分比,并逐步增加(例如5% → 25% → 50% → 100%)。Capgo保留设备已经加入小组的设备,直到您增加。
  6. 完成滚动部署时感到自信 — 确认 完成渐进式滚动部署? 这样候选人就成为所有人的稳定fallback。
  7. 如果有问题,先暂停滚动部署 — 停止新暴露,直到您调查。已经在坏构建上的设备将继续使用它,直到您 回滚发布 或 回滚发布.

完成发布 vs 回滚发布 vs 停用发布

Section titled “自动暂停策略”

Capgo 每五分钟可以评估一个启用的滚动部署,并在其失败信号超过阈值时采取行动。它测量滚动部署目标在所选频道和时间窗口中的安装和失败次数,然后使用威尔逊置信下限而不是原始失败率。

自动暂停默认禁用。配置这些字段在频道的“信息” 信息 失败率阈值 channel set:

  • (= 5%)。阈值是策略触发所需的。 时间窗口500 (默认:60)。
  • 置信度 之间
  • tab 或通过 between 0 和 1 (默认: 0.95).
  • 避免基于样本数量过小而采取行动的最小尝试次数和失败次数。
  • 冷却 分钟(默认:60),防止重复操作。
  • 操作: pause, rollback, 或 notify.

pause 停止新发布的曝光 rollback 清除目标并返回稳定fallback,并 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 和控制台入口点

API 和控制台入口点
  • 控制台: 应用程序 → 渠道 渠道 → 信息 → 渐进式发布
  • 渠道 API: 公共渠道 API 用于发布字段、推广和回滚
  • 分配包 API: PUT /bundle/ 与 target: auto, stable, 或 rollout

关于通道路由和设备优先级的通用信息,请参见 频道。关于紧急包恢复,请参见 回滚一个live update.