跳过主要内容
自动构建

自动 Capacitor IOS 构建与 Codemagic

如何在 5 分钟内 (2024) 使用 Codemagic 和 Codemagic 为您的 IOS Ionic 应用程序设置 CI/CD pipeline

自动Capacitor IOS 构建与 Codemagic

使用 Codemagic 的 iOS 持续交付

前提条件

继续教程之前…

  • iOS 开发者计划会员资格。
  • 愿意阅读 😆…

关于价格的重要事项

价格Codemagic Action

https://codemagic.io/zh/%E8%93%BD%E4%BB%BD/

该服务是‘免费的 每月500个macOS M1分钟,取决于所选机器.
我们将使用一个 macOS M1 机器,截图中可以看到其价格和限制(价格截至教程创建时,可能会在未来发生变化)

🔴 已知价格和要求后,如果您喜欢,我们继续…

📣 在文章中,我们假设我们已经在iTunes Connect中创建了应用,我们有Apple生态系统的证书,Codemagic将为我们设置一切!

让我们开始探索!

步骤

  1. 使用 App Store Connect API 与 Codemagic
  2. 要求
  3. 创建 App Store Connect API 密钥
  4. 使用 App Store Connect API 密钥
  5. 复制 Fastlane 文件
  6. context: Capgo 营销网站。角色:UI 标签。位置:页面代理/[slug].astro。消息键 `agents_page_copy_label` (代理页面复制标签)。

1. 使用 App Store Connect API 与 Codemagic

1. 使用 App Store Connect __CAPGO_KEEP_0__ 与 Codemagic
From 从

苹果支持中心

需求

为了能够使用App Store Connect API, Codemagic需要 三个 事项。

  1. 发行者ID。
  2. 密钥ID。
  3. 密钥文件或密钥内容。

创建App Store Connect API密钥

要生成密钥,您必须在App Store Connect中具有管理员权限。如果您没有该权限,请将相关人员指向此文章并遵循以下说明。

1 — 登录到 App Store Connect.

2 — 选择 用户和访问.

App Store Connect 用户访问

3 — 选择API密钥选项卡。

App Store Connect API密钥

4 — 点击生成API密钥或添加(+)按钮。

App Store Connect API密钥创建

5 — 请输入密钥名称并选择访问级别。我们建议选择 App Manager 访问权限,了解更多关于Apple Developer Program角色权限 这里

App Store Connect API密钥创建名称

6 — 点击生成。

一个API密钥的访问权限不能限制到特定的应用程序。

新建密钥的名称、密钥ID、下载链接和其他信息将出现在页面上。

App Store Connect下载密钥

在这里获取三个必要信息: 1. 问题ID。
2. 密钥ID。
3. 点击“下载API密钥”以下载您的API私钥。只有当私钥尚未下载时才会显示下载链接。Apple不会保留私钥的副本。因此,您只能下载一次。

🔴 将您的私钥存储在安全的地方。您不应共享您的密钥、将密钥存储在code仓库中或将密钥包含在客户端code中。

将App Store ConnectAPI密钥添加到Codemagic

  1. 打开您的Codemagic团队设置 选择团队集成 打开团队 选择code签名身份 选择code签名身份 并且上传证书 上传证书

  2. 点击 添加密钥 按钮。

  3. 输入 App Store Connect API key name这是一个人类可读的密钥名称,用于在应用程序设置中引用密钥。

  4. 输入 Issuer ID 和 Key ID 值。

  5. 点击 选择一个 .p8 文件 或将文件拖拽到上传 App Store Connect API key 下载的文件。

  6. 点击 保存.

现在我们可以使用 App Store Connect API key 管理 Codemagic,太棒了!

2. 创建证书和配置文件

证书

打开 XCode,转到 设置 > 账户 > Apple ID > 类丶 和选择一为类丶。

Code 签名身份

点击一为 管理为类丶 > + 和选择 起安类丶类、类丶类丁合置.

起安类丶类、类丶类丁合置

很给一为类丶、下一为类丶、类丶类丁合置

很给一为类丶、下为类丶、类丶类丁合置 .p12 file.

要实现此功能,您需要切换到钥匙串中的 登录 钥匙串 我的证书.

我的证书

然后您可以选择要下载的证书(按证书日期查找)

然后右键单击证书并选择 导出.

选择文件格式 个人信息交换 (.p12).

这将下载证书为 .p12 文件。

配置文件

打开 苹果开发者 并选择正确的团队。

然后创建一个新配置文件,点击 +

创建新配置文件

并选择 App Store Connect.

选择 App Store Connect

然后您需要选择正确的应用程序,注意您不能使用通配符否则签名会失败。

选择正确的应用程序

选择您之前创建的正确证书(查找有效期,应与今天相同的日期和月份)并点击 继续.

选择正确的证书

最后输入配置文件的名称并点击 生成.

配置文件的名称将用于在 Codemagic 中识别配置文件。

生成配置文件

您可以将配置文件下载为一个 .mobileprovision 文件。

下载配置文件

添加Code签名证书

Codemagic允许您上传code签名证书作为包含证书和私钥的PKCS#12存档。当上传时,Codemagic将要求您提供证书密码(如果证书受密码保护)以及一个唯一 参考名称, 可以在此处使用以获取特定文件。 codemagic.yaml 上传证书

  • 生成新证书
  • 从开发者门户获取
  • 打开您的Codemagic团队设置,前往
  1. codemagic.yaml设置 > > Code 签名身份.
  2. iOS证书 配置中使用此名称可以获取特定文件。 tab.
  3. 点击上传证书文件 选择 .p12 或 .pem 文件 或将文件拖拽到指示框内
  4. 输入 证书密码 并选择 参考名称.
  5. 点击 添加证书

添加分发配置文件

Codemagic 允许您上传用于应用程序的分发配置文件或从 Apple Developer Portal 中获取配置文件。

每个添加到Code签名身份的配置文件的类型、团队、包ID和过期日期都会被显示。此外,Codemagic会让您知道是否在code签名身份中存在匹配的Code签名证书(签名身份中的绿色勾选标记)或否。 证书 3. 配置Codemagic

配置Codemagic机密

你好奇这些值是从哪里来的?答案不再是秘密了,它来自你的项目的机密。 🤦

4. 配置Codemagic工作流文件 ENV 创建一个名为__CAPGO_KEEP_0__的文件

在你的项目的根目录中添加以下内容。

这个工作流应该在手动或每次__CAPGO_KEEP_0__标签后触发。 codemagic.yml 3. 配置Codemagic

workflows:
  ionic-capacitor-ios-workflow:
    name: Capacitor iOS Workflow
    max_build_duration: 120
    instance_type: mac_mini_m1
    integrations:
      app_store_connect: CodeMagic
    environment:
      ios_signing:
        distribution_type: app_store
        bundle_identifier: YOUR_BUNDLE_IDENTIFIER
      vars:
        XCODE_WORKSPACE: ios/App/App.xcworkspace
        XCODE_SCHEME: App
        APP_STORE_APP_ID: YOUR_APP_STORE_APP_ID
      node: v20.14.0
      xcode: 15.4
      cocoapods: default
    triggering:
      events:
        - tag
      tag_patterns:
        - pattern: '*'
          include: true
    scripts:
      - name: Install dependencies
        script: |
          npm install
      - name: Cocoapods installation
        script: |
          cd ios/App && pod install
      - name: Update dependencies and copy web assets to native project
        script: |
          npm run build
          npx cap sync ios
      - name: Set up code signing settings on Xcode project
        script: |
          xcode-project use-profiles
      - name: Increment build number
        script: |
          cd $CM_BUILD_DIR/ios/App
          LATEST_BUILD_NUMBER=$(app-store-connect get-latest-app-store-build-number "$APP_ID")
          agvtool new-version -all $(($LATEST_BUILD_NUMBER + 1))
      - name: Build ipa for distribution
        script: |
          xcode-project build-ipa \
            --workspace "$XCODE_WORKSPACE" \
            --scheme "$XCODE_SCHEME"
    artifacts:
      - build/ios/ipa/*.ipa
      - /tmp/xcodebuild_logs/*.log
      - $HOME/Library/Developer/Xcode/DerivedData/**/Build/**/*.app
      - $HOME/Library/Developer/Xcode/DerivedData/**/Build/**/*.dSYM
    publishing:
      email:
        recipients:
          - YOUR_EMAIL
        notify:
          success: true # To not receive a notification when a build succeeds
          failure: false # To not receive a notification when a build fails
      app_store_connect:
        auth: integration
        # Configuration related to TestFlight (optional)
        # Note: This action is performed during post-processing.
        submit_to_testflight: true
        # Configuration related to App Store (optional)
        # Note: This action is performed during post-processing.
        submit_to_app_store: false

本工作流程应手动触发或在每次GitHub后触发。 tag如果您需要自动化标签,请参见 自动构建和发布与GitHub动作 首先。

然后,这个工作流程将拉取您的NodeJS依赖项,安装它们并构建您的JavaScript应用。

每次您发送一个新的标签,测试飞行中的一个发布将被构建。

您的应用程序不需要使用Ionic,只需Capacitor基础即可,且可以使用旧的Cordova模块,但CapacitorJS插件应优先使用。

5. 触发工作流

触发工作流

推送新的提交到分支 main 或 development 触发工作流以触发工作流。

以触发工作流的方式触发工作流。

几分钟后,构建应该在您的 App Store Connect 控制台中可用。

Testflight 控制台

手动启动

您可以手动启动工作流程。

首先选择要构建的应用,然后点击 上下文:Capgo Builder / 原生云构建产品页面。角色:短 UI 标签或导航项。消息键 `native_build_builder_credit_first` (原生构建构建者信用第一)。.

启动新构建

选择应用

然后选择要构建的分支。

选择分支 上下文:Capgo Builder / 原生云构建产品页面。角色:短 UI 标签或导航项。消息键 `native_build_builder_credit_first` (原生构建构建者信用第一)。.

然后点击

构建列表

点击构建以查看结果。

构建结果

可以从本地机器部署

是的,您可以,而且这很容易。

您可以使用Xcode构建和签署您的应用程序,正如往常一样。

感谢

本博客基于以下文章:

继续进行自动Capacitor IOS构建与Codemagic

如果您正在使用 使用 Capacitor 与 Codemagic 自动构建 iOS 将其与 __CAPGO_KEEP_0__ CI/CD Capgo 自动化CI/CD 在 Capgo Native Builds 中规划产品工作流程 在 Capgo Integrations 中规划产品工作流程 Capgo Integrations Capgo 集成 为产品工作流程在Capgo集成中 __CAPGO_KEEP_0__ Actions Integration __CAPGO_KEEP_0__ Actions Integration GitHub 行为集成 为 GitHub Actions Integration 的实现细节。

通过 Capacitor 实现实时更新

当 web 层 bug 活跃时,通过 Capgo 发布修复,而不是等待 App Store 审批几天。用户在后台接收更新,而原生变化仍在正常审批路径中。

最新博客文章

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