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

https://codemagic.io/zh/%E8%B4%B8%E6%AC%BE/
该服务是 ‘免费 每月最高可使用 500 分钟 macOS M1 机器时间,具体取决于所选机器。
我们将使用一个 macOS M1 机器,截图中显示了其价格和限制(价格截至教程创建时间,可能会在未来发生变化)
🔴 已知需求和价格后,如果您喜欢,我们继续…
📣 在本文中,我们假设我们已经在 iTunes Connect 中创建了应用,拥有 Apple 生态系统的证书,Codemagic 将为我们设置一切!
让我们开始!
本文中的步骤
- 使用 App Store Connect API 与 Codemagic
- 需求
- 创建 App Store Connect API 密钥
- 使用 App Store Connect API Key
- 复制 Fastlane 文件
- 配置 Codemagic
1. 使用 App Store Connect API 与 Codemagic
从 2021 年 2 月开始,所有用户必须使用两步验证或两因素认证登录 App Store Connect。这种额外的安全层对于您的 Apple ID 有助于确保您是唯一能够访问帐户的人。
来自 苹果支持
使用 match 开始需要您撤销现有的证书。但是,别担心,您将直接获得新的证书。
要求
要能够使用 App Store Connect API,Codemagic 需要 三个 东西
- 发行者 ID。
- 密钥 ID。
- 密钥文件或密钥内容。
创建 App Store Connect API 密钥
要生成密钥,您必须在 App Store Connect 中具有管理员权限。如果您没有该权限,请将相关人员指向此文章并遵循以下说明。
1 — 登录到 App Store 连接.
2 — 选择 用户和访问.

3 — 选择 API 密钥选项卡。

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

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

6 — 点击生成。
一个 API 密钥的访问权限无法限制到特定的应用。
新密钥的名称、密钥 ID、下载链接和其他信息将出现在页面上。

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

-
点击“添加密钥” 点击“添加密钥” button.
-
进入
App Store Connect API key name。 这是用于在应用设置中引用此密钥的人类可读名称。 -
进入
Issuer ID和Key IDcontext -
值。 点击 将文件拖拽到上传之前下载的 App Store Connect API 密钥。
-
Click 点击.
现在我们可以使用 App Store Connect 的 API key 来管理 Codemagic,太棒了!
2. 创建证书和配置文件
证书
打开 XCode 并转到 设置 > 账户 > Apple ID > 团队 并选择您的团队。

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

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

然后您可以选择要下载的证书。 (根据证书的日期查找)
然后右键单击证书并选择 导出.
选择文件格式 个人信息交换 (.p12).
这将下载证书作为 .p12 文件。
配置文件
打开 Apple Developer 然后选择合适的团队。
然后创建一个新的配置文件,点击 +

并选择 App Store Connect.

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

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

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

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

添加 Code 签名证书
Codemagic 允许您上传 code 签名证书作为包含证书和私钥的 PKCS#12 档案。当上传时,Codemagic 会要求您提供证书密码(如果证书被密码保护),以及一个唯一的 参考名称,它可以在 codemagic.yaml 配置中使用来获取特定的文件。
- 上传证书
- 生成新证书
- 从开发者门户获取
- 打开您的Codemagic团队设置,前往 codemagic.yaml设置 > Code 签名身份.
- 打开 iOS证书 选项卡。
- 上传证书文件,点击 选择一个 .p12 或 .pem 文件 或将其拖拽到指示的框架中。
- 输入 证书密码 并选择一个 参考名称.
- 点击 添加证书
添加推送配置文件
Codemagic允许您上传用于应用程序的推送配置文件或从Apple Developer Portal中获取配置文件。
添加的配置文件的类型、团队、包ID和过期日期将在Code签名身份中显示。此外,Codemagic将告知您是否在code签名身份中有匹配的Code签名证书(绿色勾选标记在"证书"字段中)或否。 证书 3. 配置Codemagic
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 tagAutomatic build and release with __CAPGO_KEEP_0__ actions 自动化构建和发布与GitHub动作 first.
5. Configure Codemagic workflow file
每次您发送一个新的标签,一个测试版将在TestFlight中构建。
您的App不需要使用Ionic,只需使用Capacitor的基本版本即可,App可以使用旧的Cordova模块,但Capacitor的JS插件应该优先使用。
5. 触发工作流程
触发工作流程
推送新的提交到分支 main 或 development 在Capacitor live-update替代方案比较页面中,触发工作流程。

或

在Capawesome比较页面中,触发工作流程。
在咨询服务页面中,触发工作流程。
首先选择您要构建的应用,然后点击 开始新建.

然后选择您要构建的分支

然后前往构建列表 开始新建.
构建列表

构建结果

__CAPGO_KEEP_0__
是的,您可以,而且这很容易。
您可以使用Xcode来构建和签署您的应用,正如往常一样。
感谢。
本博客基于以下文章:
从自动CapacitorIOS构建中继续使用Codemagic
如果您正在使用 自动CapacitorIOS构建与Codemagic 来规划CI/CD自动化,连接它与 Capgo 自动化CI/CD 为Capgo产品工作流程在Capgo CI/CD中 Capgo原生构建 为Capgo产品工作流程在Capgo原生构建中 Capgo集成 为产品工作流程在Capgo集成中 为__CAPGO_KEEP_0__产品工作流程在__CAPGO_KEEP_0__集成中 CI/CD集成 GitHub Capgo 行动集成 为 GitHub 行为集集成的实现细节。