跳转至正文

为 Capacitor 应用配置 CI/CD

了解如何利用 CI/CD 流水线优化 iOS 和 Android 应用发布流程,提升效率并减少错误。

为 Capacitor 应用配置 CI/CD Capgo 博客插图

想要更快、零错误的 iOS 和 Android 应用发布? CI/CD 流水线适用于 Capacitor apps 可自动化构建、测试和部署,将发布周期缩短多达 70%,错误率降低 60%。本指南涵盖从环境配置到使用 进行 Live Update 自动化的所有必要内容。 Capgo.

核心要点:

  • 为什么 CI/CD 很重要 Capacitor 应用:构建速度提升 78%,应用商店拒审率降低 60%。
  • 必备工具: Xcode 的 Mac, Android Studio 中的错误日志, CocoaPods等等。
  • Pipeline 配置:自动化处理诸如 npx cap sync、依赖缓存以及平台专属构建。
  • 使用 Capgo 实现 Live Updates:启用发布后更新,支持分阶段推送和回滚保护。

快速设置步骤:

  1. 准备环境:安装 iOS 和 Android 所需的工具。
  2. 配置项目:更新 capacitor.config.ts 并安全地管理环境变量。
  3. 构建流水线:自动化两个平台的依赖安装、构建和测试。
  4. 优化性能:使用缓存、并行构建和条件工作流。
  5. 添加 Live Update:集成 Capgo,实现安全的 OTA 更新和分阶段发布。

借助 CI/CD,Capacitor 应用可以实现更快、更流畅的发布,同时最大限度地减少错误和人工干预。准备好优化你的工作流了吗?让我们开始吧!

将现有 CI/CD 流水线与移动能力集成

准备 CI/CD 环境

掌握 CI/CD 基础后,下一步是配置环境。这是可靠自动化的核心。

工具与软件配置

确保已安装以下关键工具:

iOS 开发:

  • Xcode 14 或更高版本
  • Xcode 命令行工具
  • CocoaPods 用于管理依赖项

Android 开发:

  • Android Studio 中的错误日志
  • Android SDK 33 及以上
  • Java 开发工具包 (JDK)

要确认已安装 Xcode 命令行工具,请使用:

xcode-select -p

创建 Capacitor 项目

Capacitor 框架文档网站

您的 Capacitor 项目需要正确配置以支持 CI/CD 工作流。 capacitor.config.ts 该文件是此配置的核心:

const config: CapacitorConfig = {
  appId: 'com.example.app',
  webDir: 'build',
  ios: { 
    scheme: 'MyApp'
  }
}

此文件可确保您的项目符合 CI/CD 要求。

配置环境变量

安全地管理凭据是将环境配置与 CI/CD pipeline 连接的关键环节。

需要定义的关键变量:

  • BUILD_ENV:指定部署阶段(例如, production)
  • IOS_SIGNING_IDENTITY:您的 code 签名证书
  • ANDROID_KEYSTORE_PATH:Android keystore 的路径

对于 Android build,动态生成一个 local.properties CI 过程中的文件:

echo "sdk.dir=$ANDROID_SDK_ROOT" > android/local.properties

在进行 iOS build 时,请确保您的 CI 平台支持 macOS agent。

检查环境是否就绪:

node --version | grep "v16" && xcodebuild -version | grep "Xcode 14" || exit 1

如之前的统计数据所示,妥善管理密钥和凭据可以显著降低 App Store 审核被拒的风险。 [1].

创建 CI/CD 流水线

环境准备就绪后,下一步是为您的 Capacitor 应用设置 CI/CD 流水线。该流水线应高效管理 Web 资源和原生平台构建。

安装与更新依赖

在 CI/CD 环境中,依赖项管理需要严格的版本控制。从干净的安装流程开始:

npm install --ignore-scripts
npm install @capacitor/cli

为了加快构建速度,请使用依赖项缓存。例如, Azure DevOps 用户通过此配置将构建时间缩短了 40-60%:

- task: Cache@2
  inputs:
    key: 'npm | "$(Agent.OS)" | package-lock.json'
    path: |
      node_modules
      android/.gradle
      ios/Pods

iOS 与 Android 构建配置

以下是为两个平台配置构建的方法:

iOS 构建配置:

steps:
  - task: InstallAppleCertificate@2
    inputs:
      certSecureFile: 'certificate.p12'
      certPwd: $(P12_PASSWORD)
  - script: |
      xcodebuild -workspace ios/App/App.xcworkspace -scheme App -configuration Release -archivePath ios/App/App.xcarchive archive

Android 构建配置:

cd android
./gradlew bundleRelease

测试与部署步骤

使用矩阵策略并行运行平台测试:

test:
  steps:
    - run: npm run test:unit
    - run: npm run test:e2e
    - name: Run Platform Tests
      matrix:
        platform: [ios, android]
      run: npm run test:${{ matrix.platform }}

对于部署,请设置特定于平台的工件处理:

平台 工件类型 分发渠道
iOS .ipa App Store Connect
Android .aab Google Play 控制台

正确配置并行构建可以显著缩短流水线执行时间。

构建验证并打包完成后,即可进入 Capgo 的 Live Update 阶段(详见下一节)。

sbb-itb-f9944d2

添加 Capgo 用于 Live Updates

Capgo Live Update Dashboard 界面

将 Capgo 集成到工作流中,通过启用发布后更新来增强 CI/CD 流程。设置方法如下:

Capgo 流水线配置

首先,安装 Capgo CLI 在你的流水线环境中:

steps:
  - name: Install Capgo CLI
    run: npm install -g @capgo/cli
  - name: Configure Authentication
    env:
      CAPGO_KEY: ${{ secrets.CAPGO_API_KEY }}

此扩展通过整合 更新管理 并集成到自动构建和部署流程中。

接下来,在构建步骤之后添加上传命令:

- name: Upload Update
  run: |
    capgo upload --api-key $CAPGO_KEY --bundle ./build/app-release.apk
    capgo deploy v${VERSION} --channel production

对于 安全更新,并按如下方式配置验证设置:

{
  "verification": {
    "checksum": "strict",
    "certificatePinning": true,
    "updateTimeout": 500
  }
}

Capgo 功能概览

功能 描述
端到端加密 大幅减少部署错误。
基于渠道的部署 针对特定环境定制更新。
分阶段发布 确保更新逐步分发。

OTA 更新指南

部署后跟踪以下关键指标,以优化测试流程:

分阶段部署策略

使用分阶段发布来控制更新的分发方式:

- name: Staged Rollout
  run: |
    capgo deploy v1.2.3 --group "beta-users" --rollout 10%
    capgo deploy v1.2.3 --rollout 50%

更新监控

关注以下指标:

  • 采用率:目标是在前 24 小时内达到 40-60%。
  • 无崩溃会话率:保持在 99.5% 以上。
  • 验证时间:确保在 500ms 以内。

如果崩溃超过可接受水平,请自动执行回滚:

- name: Rollback Check
  run: |
    if [ $(capgo stats --version v1.2.3 --metric crashes) -gt 2 ]; then
      capgo rollback --channel production
    fi

提升 Pipeline 性能

聚焦三个关键领域,可以显著改善你的 pipeline:

Build 速度优化

对于仅涉及 Web 的变更,使用 npx cap sync 可以跳过完整的原生重建来节省时间,并将重建时间缩短约 40%。以下是实现条件构建的方法:

- name: Build Strategy
  run: |
    [ "$WEB_ONLY" = true ] && npx cap sync || (./gradlew assembleRelease && xcodebuild ...)

这种方式确保只重建必要的组件,从而简化流程。

版本控制自动化

自动化版本控制可以简化你的工作流。使用以下脚本动态设置版本号和构建号:

- name: Set Version
  run: |
    VERSION=$(node -p "require('./package.json').version")
    BUILD_NUMBER=$GITHUB_RUN_NUMBER
    echo "APP_VERSION=${VERSION}" >> $GITHUB_ENV
    echo "BUILD_ID=${BUILD_NUMBER}" >> $GITHUB_ENV

此外,可以使用此配置设置自动语义化版本控制:

{
  "scripts": {
    "version": "standard-version",
    "build:prod": "npm version patch && ionic build --prod"
  }
}

这些实践为通过以下指标跟踪和改进 pipeline 性能提供了坚实基础:

  • 每个阶段的构建时间
  • 缓存效率(命中/未命中比率)
  • 峰值资源使用率

多环境配置

通过使用特定环境的配置,可以简化多环境管理。以下是一个示例配置:

环境 配置文件
开发 .env.dev
Staging 环境 .env.staging
生产环境 安全保险库

你可以用这个脚本动态配置环境:

- name: Configure Environment
  env:
    API_KEY: ${{ secrets.ENV_SPECIFIC_API_KEY }}
    BUNDLE_ID: ${{ parameters.bundleId }}
  run: |
    echo "ENVIRONMENT=${{ parameters.environment }}" >> $GITHUB_ENV
    echo "API_ENDPOINT=${{ parameters.apiUrl }}" >> $GITHUB_ENV

将这些配置与 Capgo 基于渠道的部署结合,可实现精准的、针对具体环境的更新。这样发布更顺畅,也能更好地控制应用在不同环境中的行为。

总结

CI/CD 在开发中的作用

在 Capacitor 应用中使用 CI/CD 流水线可显著提升工作流效率。根据行业数据,团队可以实现 发布周期加快 50-70% 得益于 iOS 和 Android 的并行构建 [3]。自动化依赖安装和平台同步等任务,可将部署错误减少 40-60% [1][2].

例如,使用 Azure DevOps 流水线的团队已实现顺序构建步骤和 Xcode 打包等流程的自动化。他们还针对开发和生产环境使用参数化配置。这种方式消除了对 Gradle 和 Xcode CLI 手动操作的依赖,确保每次都能可靠地生成构建产物。

结合 Capgo 使用,这些改进为简化更新管理打下了基础。

Capgo 用于更新管理

Capgo 与 CI/CD pipeline 无缝协作,在符合 App Store 政策的同时实现即时更新。更新只有在通过 pipeline 内置的自动化测试关卡后才会部署。

通过将自动化 build 与分阶段发布相结合,团队可以取得显著成效: 7 天内覆盖 80% 用户 以及不到一小时的回滚能力。

一种常见策略是并行运行多条部署线。自动化 build 用于内部测试,分阶段发布则面向特定用户群体。这样能确保更新既快又安全,并有严格的自动化测试关卡作为保障。 [1].

常见问题

如何创建一个 Capacitor 应用?

构建 Capacitor 应用只需几个简单的步骤:

  1. 配置环境:在系统中安装 Node.js 和 npm。然后使用 Ionic CLI 创建一个支持 Capacitor 的新项目:

    ionic start myApp tabs --capacitor
  2. 添加平台支持:添加您要支持的目标平台,例如 iOS 或 Android:

    npx cap add ios
    npx cap add android
  3. 同步您的 Web code:运行以下命令,确保您的 Web code 与原生平台保持一致:

    npx cap sync

同步步骤对于保持应用在各平台间的一致性并确保 CI/CD 流水线中的顺畅运行至关重要。有关环境配置的详细信息,请参阅“工具”部分。

继续了解如何为 Capacitor 应用设置 CI/CD

如果你正在使用 为 Capacitor 应用配置 CI/CD 规划 CI/CD 自动化,并将其与 Capgo CI/CD 集成 用于 Capgo CI/CD 中的产品工作流, Capgo Native Build 用于 Capgo Native Builds 中的产品工作流, Capgo 集成 用于 Capgo 集成中的产品工作流, CI/CD 集成 了解 CI/CD 集成的实现细节,以及 GitHub Actions 集成 有关 GitHub Actions 集成的实现细节。

为 Capacitor 应用提供 Live Updates

当 Web 层出现线上 Bug 时,通过 Capgo 发布修复,而不用等 App Store 审核好几天。用户会在后台收到更新,原生变更则仍走正常审核流程。

博客最新动态

Capgo 为你提供打造真正专业的移动应用所需的最有价值的洞察。