跳过主要内容
开发 移动 更新

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

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

马丁·多纳迪厄

马丁·多纳迪厄

内容营销

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

想简化 应用更新 and version control? SemVer(语义化版本)Capgo通过Cloudflare的Over-The-Air(OTA)更新使得管理 Capacitor 应用程序变得更容易和更快。以下是如何做到的:

  • 语义化版本的基本概念: 版本号遵循 MAJOR.MINOR.PATCH:

    • MAJOR: 主要版本号,
    • MINOR: 为了新功能的向后兼容性.
    • PATCH: 为了修复bug.
  • 为什么要使用 SemVer 与 Capgo?

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

    1. 安装 Capgo 的更新插件.
    2. 配置应用程序的版本号在 capacitor.config.json 和其他文件。
    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

快速参考表:

设置阶段 Key Action 验证步骤
安装 安装插件并同步 检查 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 fix 不影响兼容性的修复PATCH号增加。
版本类型 何时递增 自动更新行为
主版本(X.0.0) 用于破坏性API更改 需要手动批准
次版本(1.X.0) 用于新功能 可配置在Capgo
修订版本(1.0.X) 用于bug修复 通常自动

遵循 SemVer 规则,您可以简化版本管理并确保更新更顺畅地在您的部署通道中进行。

版本控制指南

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: 增加 PATCH 版本号 (例如 1.0.1 → 1.0.2)
  • New Feature: 增加 MINOR 版本号 (例如 1.0.0 → 1.1.0)
  • Breaking Change: 增加 MAJOR 版本号 (例如 1.0.0 → 2.0.0)

彻底测试您的构建并确认应用程序与服务器通信使用 notifyAppReady.

接下来,决定您的 更新策略. 您可以选择:

  • Auto-Update: 自动强制最低版本要求
  • __CAPGO_KEEP_0__ __CAPGO_KEEP_1____CAPGO_KEEP_0__:指定更新时的精确版本要求。
  • __CAPGO_KEEP_0__:使用渠道进行测试和分阶段发布.__CAPGO_KEEP_0__ __CAPGO_KEEP_1__更新命令

Capgo CLI Update Commands

Use Capgo’s CLI to deploy your update with ease. Here’s how:

# 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_KEEP_1__推送(而不是像@AppFlow那样花所有的钱 🙂”

“@Capgo is a smart way to make hot code pushes (and not for all the money in the world like with @AppFlow) 🙂”

Once deployed, you can monitor updates through Capgo’s dashboard. Updates typically reach users within minutes after they open the app. The process works like this:

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

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

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

我们实践敏捷开发,@__CAPGO_KEEP_0__ 在持续交付给用户方面至关重要!

问题解决和建议

Managing semantic versioning in Capgo can sometimes complicate update deployments. To avoid overwriting your development work, configure the following in your capacitor.config.json 在__CAPGO_KEEP_0__中管理语义版本号有时会使更新部署复杂化。为了避免覆盖开发工作,请在文件中配置以下内容:

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

文件:

  • 如果更新失败,以下是您可以采取的措施: autoUpdate 设置 false 在开发期间
  • 卸载应用
  • 重新安装使用修正版本。
  • 一旦稳定后,重新启用自动更新。

对于主要版本更新,请使用 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]

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

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

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

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

更新恢复步骤

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

  1. 回滚到上一个稳定包
  2. Increment __CAPGO_KEEP_0__ version 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 in production for our user base of +5000. We’re seeing very smooth operation almost all our users are upto date within minutes of the OTA being deployed to @Capgo.” - colenso [1]

MAJOR.MINOR.PATCH 版本系统使得轻松地与用户沟通重大更新、新功能和bug修复 [5]. This is especially helpful for teams managing several releases each week through Capgo’s platform.

Capgo’s 加密解决方案集成CI/CD工具,且成本友好,节省成本达$26100 [1]自定义频道确保更新到达正确的用户

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

Keep going from How to Use Semantic Versioning with Capgo OTA Updates

如果您正在使用 How to Use Semantic Versioning with Capgo OTA Updates 来规划回滚和版本控制,连接它 回滚 回滚的实现细节 版本目标 版本目标的实现细节 更新行为 更新行为的实现细节 打包 打包的实现细节 Capgo Live Updates for the product workflow in Capgo Live Updates.

实时更新Capacitor应用

当有一个web层bug在运行时,通过Capgo将修复直接推送给用户,而不是等待几天的app store审批。用户在后台接收更新,而native变化仍然在正常的审批路径中。

立即开始

最新博客文章

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