iOS 使用 Codemagic 的持续交付
前提条件
继续教程之前,请注意…
- iOS 开发者计划会员资格。
- 愿意阅读 😆…
关于价格的重要信息

该服务是 ‘免费的,直到每月 500 分钟 macOS M1 / 月,取决于所选机器。 我们将使用一个
We are going to use a macOS M1 机器,截图中可以看到价格和限制(截图创建时的价格,可能会在未来发生变化)
🔴 警告了需求和价格后,如果您喜欢,我们继续…
📣 在文章中,我们假设我们已经在 iTunes Connect 中创建了应用,拥有 Apple 生态系统的证书,Codemagic 将为我们设置一切!
让我们开始探索!
本文的步骤
- 使用 App Store Connect API 与 Codemagic
- 要求
- 创建 App Store Connect API 密钥
- 使用 App Store Connect API 密钥
- 复制 Fastlane 文件
- 配置 Codemagic
1. 使用 App Store Connect API 与 Codemagic
从 2021 年 2 月开始,所有用户必须使用两步验证或两因素验证登录 App Store Connect。这种额外的安全层为您的 Apple ID 提供了额外的安全保障,确保只有您才能访问您的帐户。
从 苹果支持
开始使用 match 需要您撤销现有的证书。但是,不用担心,您将直接获得新的证书。
要求
为了能够使用 App Store Connect API,Codemagic 需要 三个 证书颁发者 ID
- 密钥 ID
- 密钥文件或密钥内容
- Starting February 2021, two-factor authentication or two-step verification is required for all users to sign in to App Store Connect. This extra layer of security for your Apple ID helps ensure that you’re the only person who can access your account.
创建 App Store Connect API Key
要生成密钥,您必须在 App Store Connect 中具有管理员权限。如果您没有该权限,可以将相关人员指向本文并遵循以下说明。
1 — 登录到 App Store Connect.
2 — 选择 用户和访问.

3 — Select the API Keys tab.

4 — Click Generate API Key or the Add (+) button.

App Store Connect 密钥创建过程中… App Manager 访问权限,了解更多关于 Apple Developer Program 角色权限 这里

6 — 点击生成。
一个 API key 的访问权限不能被限制到特定的应用。
新建的 key 的名称、key ID、下载链接和其他信息会在页面上显示。

获取以下三个必要信息:
<1> 问题 ID。
<2> Key ID。
<3> 点击“下载 API Key”下载您的 API 私钥。下载链接只有在私钥尚未下载时才会出现。Apple 不会保留私钥的副本。因此,您只能下载一次。
🔴 请将您的私钥存储在安全的地方。您不应共享您的密钥、将密钥存储在 code 仓库中或将密钥包含在客户端 code 中。
将 App Store Connect API 密钥添加到 Codemagic
-
打开您的 Codemagic 团队设置
选择 code 签名身份
并上传证书

-
点击 添加密钥 按钮。
-
输入
App Store Connect API key name。 这是用于在应用程序设置中引用密钥的密钥的可读名称。 -
输入
Issuer ID和Key ID值 -
点击 选择一个 .p8 文件 或将文件拖拽到上传 App Store Connect API 密钥
-
点击 保存.
现在我们可以使用 App Store Connect API 密钥管理 Codemagic,太棒了!
2. 创建证书和配置文件
证书
打开 XCode 并前往 设置 > 账户 > Apple ID > 团队 并选择您的团队。

点击 管理证书 > + 并选择 苹果分发.

然后您可以创建一个新的证书。
然后您需要前往钥匙串下载证书作为 .p12 文件。
要做到这一点,您需要前往钥匙串切换到 登录 钥匙串,然后切换到 我的证书.

然后您可以选择要下载的证书。(查看证书的日期)
然后右键单击证书并选择 导出.
选择文件格式 个人信息交换(.p12).
这将下载证书作为 .p12 文件。
配置文件
打开 苹果开发者 并选择正确的团队。
然后创建一个新配置文件,通过单击 +

并选择 App Store Connect.

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

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

最后输入配置文件的名称并点击 生成.
配置文件名称将用于在 Codemagic 中识别配置文件。

您可以下载配置文件作为 .mobileprovision 文件。

添加Code签名证书
Codemagic允许您上传code签名证书作为PKCS#12存档,存档包含证书和私钥,私钥用于使用证书。上传时,Codemagic会要求您提供证书密码(如果证书被密码保护),以及一个唯一的 参考名称,然后可以在 codemagic.yaml 配置中使用它来获取特定的文件。
- 上传证书
- 生成新证书
- 从开发者门户获取
- 打开您的Codemagic团队设置,前往 codemagic.yaml设置 > Code签名身份.
- 打开 iOS证书 标签。
- 点击上传证书文件 选择一个.p12或.pem文件 或将其拖拽到指示框架中。
- 输入 证书密码 并选择 参考名称.
- 点击 添加证书
添加推送配置文件
Codemagic允许您上传用于应用程序的推送配置文件或从Apple Developer Portal中获取配置文件。
每个添加到Code签名身份中的配置文件的类型、团队、包ID和过期日期都会显示。此外,Codemagic会让您知道是否在code签名身份中是否有匹配的Code签名证书(配置文件字段中的绿色勾选)或否。 证书 3. 配置Codemagic
配置Codemagic密钥
您想知道这些值的来源吗?答案不再是秘密了,它来自您的项目的密钥。 🤦
添加推送配置文件 ENV 推送配置文件
4. 配置 Codemagic 工作流文件
创建一个名为 codemagic.yml 在项目根目录下并添加以下内容。
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 标签触发,如果您需要自动化标签,请参阅 自动构建和发布与 GitHub 动作 首先。
然后,这个工作流将拉取 NodeJS 依赖项,安装它们并构建您的 JavaScript 应用程序。
每次您发送新的标签时,测试飞行中的发布将被构建。
您的 App 不需要使用 Ionic,只需 Capacitor 基础即可,且可以使用旧的 Cordova 模块,但 Capacitor JS 插件应优先使用。
5. 触发工作流
触发工作流程
推送新的提交到分支 main 或 development 推送新的提交到分支

推送新的提交到分支

推送新的提交到分支
或
推送新的提交到分支 或.

然后选择您要构建的分支。

然后点击 开始新建.
然后去查看构建列表

然后点击构建以查看结果

可以从本地机器部署
是的,您可以轻松地这样做。
您可以使用Xcode构建和签名您的应用,如往常一样。
感谢
本博客基于以下文章:
从自动 Capacitor IOS 构建中继续
如果您正在使用 自动 Capacitor IOS 构建 来规划 CI/CD 自动化,连接它与 Capgo CI/CD 为产品工作流程在 Capgo CI/CD 中 Capgo 原生构建 为产品工作流程在 Capgo 原生构建中 Capgo 集成 为产品工作流程在 Capgo 集成中 CI/CD 集成 为 CI/CD 集成的实现细节 GitHub 动作集成 为 GitHub 动作集成的实现细节