跳过主要内容

如何使用Capgo OTA更新的语义版本控制

学习如何使用语义版本控制和Capgo的OTA更新来简化Capacitor应用的更新和版本控制

马丁·多纳迪尤

马丁·多纳迪尤

内容营销

如何使用Capgo OTA更新的语义版本控制

想简化应用更新 应用更新 和版本控制? 语义化版本(SemVer) 结合了 Capgo’s Over-The-Air(OTA)更新使得管理 Capacitor 应用程序更容易和更快。以下是如何做到的:

  • 语义化版本的基本知识: 版本使用以下格式 MAJOR.MINOR.PATCH:

    • 主版本号: 用于重大变更。
    • 次版本号: 为了新功能的向后兼容性.
    • PATCH: 为了修复bug.
  • 为什么要使用 Capgo 的 SemVer?

    • 关于更新的清晰沟通.
    • 更智能的版本管理.
    • 避免依赖冲突.
    • 有序的发布计划.
  • Capgo 的设置 步骤:

    1. 安装 Capgo 的更新插件.
    2. 配置应用程序的版本号在 capacitor.config.json and other files.
    3. 使用您的API密钥进行初始化.
    4. 使用 Capgo CLI 来打包和上传更新.
  • 管理版本和频道:

    • 使用单独的频道(例如,用于测试的“beta”,用于稳定发布的“production”)。
    • 控制更新策略(自动更新补丁,手动批准重大更改)。
    • 回滚选项用于失败的更新.
  • 部署流程:

    • 根据SemVer规则更新版本号.
    • 在部署之前进行彻底的测试。
    • 使用 CLI 命令上传和分发更新。

Capgo 确保更新快速可靠地到达用户,提供工具来处理中断并保持稳定。适合使用 CI/CD 工作流来自动化更新的团队。

快速提示: 始终测试更新并使用通道来有效地管理阶段性发布。

语义版本控制 | 提升水平

Capgo 设置指南

Capgo OTA 更新和版本控制实时更新仪表板界面

以下是如何设置 Capgo 来管理 OTA 更新和版本控制的步骤。

初始设置步骤

首先安装 Capgo 升级插件:

npm install @capgo/capacitor-updater  
npx cap sync

确保您的 capacitor.config.json 文件使用语义版本格式:

{ 
  "appId": "com.example.app", 
  "appName": "My App", 
  "version": "1.0.0" 
}

对于较旧的项目,更新版本详细信息在以下位置:

  • package.json (查找 version 字段)
  • android/app/build.gradle (更新 versionName)
  • ios/App/App.xcodeproj/project.pbxproj (更新 CURRENT_PROJECT_VERSION)

配置完成后,使用您的 API 密钥初始化 Capgo:

npx @capgo/cli@latest init YOUR_API_KEY

快速参考表:

设置阶段 密钥操作 验证步骤
安装 安装插件并同步 检查 package.json
配置 设置版本号 在所有文件中验证
初始化 连接使用 API 密钥 测试连接状态
构建 创建初始包 确认上传成功

版本控制集成

Capgo 与 CI/CD 平台的集成使得 自动更新 变得简单。 支持的平台包括:

如果您正在进行本地开发,为了防止自动更新覆盖您的本地更改,请在您的配置中添加以下内容:

{ 
  "plugins": { 
    "CapacitorUpdater": { 
      "autoUpdate": false 
    } 
  } 
}

这确保了 Capgo 不会覆盖您的本地更改。 一旦您的设置就绪,请上传您的第一个版本:

npx @capgo/cli@latest bundle upload  
npx @capgo/cli@latest channel set production -s default

最后,在您的应用程序的主文件中,通知原生插件关于捆绑包的健康状况:

import { CapacitorUpdater } from '@capgo/capacitor-updater';  
CapacitorUpdater.notifyAppReady();

此设置确保您的应用程序准备好进行平滑的OTA部署和版本管理。

使用Capgo的语义版本管理

版本号管理

Capgo使用语义版本管理(SemVer)来管理应用程序版本,格式为 主版本号.修订版本号.修订号。以下是它的工作原理:

  • 主版本号(X.0.0)::当发生破坏兼容性的更改时,增加主版本号。
  • 修订版本号(1.X.0)::当添加新的兼容性功能时,增加修订版本号。
  • 修订号(1.0.X):: 修复不影响兼容性的 bug 修复时,增加 PATCH 号。
版本类型 何时递增 自动更新行为
主版本(X.0.0) 用于破坏性API更改 需要手动批准
次版本(1.X.0) 用于新功能 可配置在Capgo
修订版本(1.0.X) 用于 bug 修复 通常自动

通过遵循 SemVer 规则,您可以简化版本管理并确保您的部署通道更新更加Smooth.

版本控制指南

Capgo 允许您通过设置不同阶段的工作流程的不同通道来有效地管理部署.

  • 基于通道的版本管理:通过创建测试和生产的独立通道来组织您的部署过程。例如:

    • 使用一个“beta”通道(例如 1.2.0-beta)来测试新功能.
    • 保持一个“生产”通道(例如 1.2.0)来稳定发布.
    • 在解决平台特定问题时添加平台特定通道(例如“ios-hotfix”版本 1.2.1)。
  • 更新策略配置:使用Capgo的配置选项来控制更新的应用方式。例如:

    {
      "plugins": {
        "CapacitorUpdater": {
          "disableAutoUpdate": "minor"
        }
      }
    }

    此设置确保用户自动接收补丁更新,而小版本和重大版本更新需要手动批准.

  • 版本回滚策略: 使用预发布标识符来维持清晰的回滚选项。这种方法允许您在出现问题时回滚到之前的版本,同时保持所有渠道的版本一致。

这些最佳实践使得管理更新、测试新功能和维持应用程序部署过程的稳定性变得更加容易。

sbb-itb-f9944d2

OTA更新部署

一旦您的版本管理设置就绪,请按照以下步骤有效地部署OTA更新。

更新准备

首先更新 package.jsoncapacitor.config.json。确保版本遵循SemVer格式(主版本.次版本.修订版本):

  • Bug Fix修复BUG
  • PATCH版本号增加(例如1.0.1 → 1.0.2)新功能
  • MINOR版本号增加(例如1.0.0 → 1.1.0)重大变更

MAJOR版本号增加(例如1.0.0 → 2.0.0) notifyAppReady.

彻底测试您的构建并确认应用程序与服务器通信使用 下一步,决定您的更新策略

  • 。您可以选择:自动更新:自动强制最低版本要求
  • 手动控制: 指定更新的具体版本要求。
  • 基于频道: 使用频道进行测试和阶段性发布。

Capgo CLI 更新命令

使用 Capgo 的 CLI 来轻松部署更新。具体步骤如下:

# Initialize Capgo in your project
npx @capgo/cli@latest init [apikey]

# Upload your update bundle
npx @capgo/cli bundle upload [appId]

# Add a new distribution channel
npx @capgo/cli channel add [channelName] [appId]

Capgo 确保安全部署,使用端到端加密和安全密钥管理。

“@Capgo 是一种聪明的方式来进行热 code 推送(而不是像 @AppFlow 那样花所有的钱 🙂)”

部署后,您可以通过 Capgo 的控制台监控更新。更新通常在用户打开应用程序后几分钟内就可以到达。整个过程如下:

  • 应用程序检查更新。
  • 在后台下载更新。
  • 在用户退出应用程序时将新版本标记为活跃。
  • 在下一次启动时应用更新。

对于企业级部署,您可能想将CI/CD自动化集成。

“We practice agile development and @Capgo is mission-critical in delivering continuously to our users!”

问题解决和建议

版本管理问题

在Capgo中管理语义版本号有时会使更新部署变得复杂。为了避免覆盖开发工作,请在文件中配置以下内容: capacitor.config.json 文件:

{ 
  "plugins": { 
    "CapacitorUpdater": { 
      "autoUpdate": false 
    } 
  } 
}

如果更新失败,以下是您可以采取的措施:

  • 设置 autoUpdate 在开发期间 false 卸载应用
  • file
  • 重新安装使用正确的版本。
  • 一旦稳定后,重新启用自动更新。

对于主要版本更新,请使用 disableAutoUpdateBreaking 标志并监听 majorAvailable 事件来正确处理更新:

CapacitorUpdater.addListener('majorAvailable', (info) => {
  console.log(`Major update available: ${info.version}`);
  // Add your update prompt logic here
});

通过结合这些配置和良好的团队实践,您可以维持版本一致性并减少错误。

团队版本控制

一旦个人更新被管理后,团队需要建立强大的版本控制实践。

“Testing each change before merging it with the main repository will reinforce stability and avoid costly errors” [4]

在合并到主仓库之前测试每个更改将加强稳定性并避免昂贵的错误”

  • 以下是确保一致性的方法: 将一个分支定义为 To成为真实的来源。
  • 使用独立的Capgo频道来区分开发和生产环境。
  • 通过CI/CD管道自动上传版本。
  • 以清晰详细的提交信息记录所有code的变更。

对于更大的团队,以下版本管理矩阵可以帮助组织更新:

环境 频道 自动更新 版本模式
开发 dev 禁用 0.x.x
测试环境 beta 已启用 x.x.x-beta
生产环境 稳定 已启用 x.x.x

更新恢复步骤

即使采取了预防措施,更新也可能失败。如果发生这种情况,请遵循以下恢复步骤:

  1. 回滚到上一个稳定包。
  2. Increment __CAPGO_KEEP_0__ numbers for any new fixes (note: version numbers cannot be reused after deletion) [2].
  3. Verify updates during app startup to ensure they work as expected.

Capgo的更新器是为了处理中断而设计的。例如,如果服务器不可达或更新被删除,应用程序将继续正常运行 [3]. 在下一次应用程序启动时,自动重试失败的网络请求 [3]. 内置的弹性降低了停机时间,确保了更顺畅的运作

Summary

使用Capgo和语义版本号,Capacitor应用程序的OTA更新效率更高。通过此系统,已成功推送947.6亿次更新,1,400个生产应用程序使用了此系统 [1]. 这种设置使开发者能够快速、有控制地推送更新,避免了应用商店的延迟 [1]开发者的话:

“我们推出了

__CAPGO_KEEP_0__ OTA更新” Capgo 在生产环境中为我们的用户群体提供 +5000。我们看到 OTA 部署到 @Capgo 后,几乎所有用户都能在几分钟内保持最新状态。” - colenso [1]

MAJOR.MINOR.PATCH 版本系统使得轻松地与用户沟通重大更新、新功能和 bug 修复 [5]. 这尤其有助于通过 Capgo 平台管理多个每周发布的团队

Capgo 的 加密解决方案, 与 CI/CD 工具集成,成本也很便宜 - 五年内节省成本达 $26,100 [1]. 自定义频道确保更新在正确的时间到达正确的用户

“我们实行敏捷开发,@Capgo 在持续交付给用户方面是 mission-critical!” - Rodrigo Mantica [1]

继续阅读 How to Use Semantic Versioning with Capgo OTA Updates

如果您正在使用 How to Use Semantic Versioning with Capgo OTA Updates 来规划回滚和版本控制,连接它 回滚 回滚的实现细节 版本目标 版本目标的实现细节 更新行为 更新行为的实现细节 打包 打包的实现细节 Capgo 实时更新 Capgo 实时更新的产品工作流

实时更新Capacitor应用

当有web层bug时,通过Capgo发布修复而不是等待几天的app store审批。用户在后台接收更新,而native变化仍在正常审批路径中。

立即开始

最新博客文章

Capgo 为您提供了创建真正专业的移动应用所需的最佳见解。