用途
Capgo Release Management 用于通过 CLI 完成 Capgo OTA bundle 的发布、推广、回滚和清理。它把发布操作中的常见任务集中到一组命令行指令上,包括上传 bundle 并关联渠道、查看渠道当前版本、判断改动是否可 OTA 安全下发、执行渐进式发布、在出现问题时回滚,以及清理或删除不再使用的 bundle 和渠道。
主要能力
技能支持以下操作:
- 上传 bundle 并关联渠道:
bundle upload [appId] --path ./dist --channel production,多个渠道可用逗号分隔。 - 判断改动是否 OTA 安全:
bundle releaseType [appId] --channel production输出 OTA 或 native;bundle compatibility可查看原生差异。 - 查看当前生效版本:
channel currentBundle production [appId] --quiet。 - 推广与回滚:
channel promote staging production、channel set production [appId] --bundle <previous-version>。 - 渐进式发布:上传时使用
--rollout 10,再通过--rollout-percentage 50、--rollout-promote、--rollout-rollback控制。 - 渠道管理:
channel add、channel set(含--disable-auto-update和平台/设备开关)。 - 列出与清理:
bundle list、channel list、bundle cleanup、bundle delete、channel delete。 - 预览与加密:
app set --preview once、get-qr、bundle upload --qr-preview;key create、key save、key delete_old。 - 自定义 zip 与外部上传:
bundle zip、bundle encrypt、bundle upload --external。 所有命令均以npx @capgo/cli@latest <command>形式调用,多数命令支持-a, --apikey,在 Capacitor 项目中 appId 可省略。
使用方式
建议按以下流程操作:
- 先检查:列出渠道、查看当前生效版本、判断 OTA 安全性。如果判定为 native,应停止并转交原生构建流程。
- 上传:执行
npm run build后上传。版本默认取自 package.json,可用--bundle <semver>覆盖;版本必须唯一、大于 0.0.0 且不能是已删除版本。使用--delta时,CLI 会拒绝超过 10,000 个文件的 delta 上传。CI 中可使用--fail-on-incompatible。 - 推广与发布:用
channel promote将 staging 推广到 production;渐进式发布先上传--rollout,观察数据后再执行--rollout-promote。仅在明确需要切换生产流量时更改默认渠道。 - 回滚:列出 bundle 后通过
channel set --bundle <version>重新关联旧版本,或在发布过程中使用--rollout-rollback。设备将在下一次更新检查时获取变更。 - 加密(可选):运行
key create生成密钥并保存公钥到配置,npx cap sync确保公钥随原生应用发布,上传时传入--key-v2 ./.capgo_key_v2。CI 中私钥只保存在 runner,并加入 .gitignore。
适用场景
该技能适合需要在 Capacitor 项目中进行 OTA 发布的开发者或团队,尤其是需要上传、管理渠道、执行渐进式发布、回滚版本或判断改动是否可 OTA 安全下发的场景。也可用于设置 bundle 加密、清理旧版本,以及通过 QR 预览进行测试。
限制
不适用于以下情况:应用侧更新器代码或配置(notifyAppReady、autoUpdate、setChannel)应使用 capgo-live-updates;需要原生二进制构建时应使用 capgo-native-builds;组织、成员、2FA 或 API 密钥策略管理应使用 capgo-organization-management;端到端发布流水线设计应使用 capgo-release-workflows。此外,某些命令并不存在(如 channel create、bundle revert、upload --sign、key verify 以及不包含 bundle 的顶层 capgo upload),不应使用。bundle delete 是永久删除,且版本号不可复用;bundle cleanup --ignore-channel 会同时删除关联渠道,需谨慎使用。releaseType 只识别原生包元数据,不识别 ios/ 或 android/ 目录的直接改动。