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

该服务是 ‘免费的’ 每月最高可使用 500 分钟 macOS M1,具体取决于所选机器
我们将使用一个 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 有助于确保您是唯一可以访问帐户的人。
来自 Apple 支持
开始使用 match 需要撤销您的现有证书。 但无需担心,您将直接获得新的证书。
要求
要使用 App Store Connect API, Codemagic 需要 三个 发行者 ID
- 密钥 ID
- 密钥文件或密钥内容
- 创建 App Store Connect __CAPGO_KEEP_0__ 密钥
Creating an App Store Connect API Key
1 — 登录到
App Store Connect App Store Connect __CAPGO_KEEP_0__.
2 — 选择 用户和访问.

3 — 选择API密钥选项卡。

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

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

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

在这里获取所有三个必要的信息:
1. 问题ID。
2. 密钥ID。
3. 点击“下载API密钥”以下载您的API私钥。下载链接仅在私钥尚未下载时才会出现。Apple不会保留私钥的副本。因此,您只能下载一次。
🔴 将您的私钥存储在安全的地方。您不应共享您的密钥、将密钥存储在code仓库中或将密钥包含在客户端code中。
将App Store ConnectAPI密钥添加到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 > 团队 选择您的团队。

点击 管理证书 > + 选择 Apple Distribution.

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

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

并选择 App Store Connect.

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

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

最后输入配置文件的名称并点击 Generate.
将使用此名称识别配置文件在 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
This workflow should be triggered manually or after each GitHub 标签触发时触发,如果你需要自动化标签,请参见 Automatic build and release with GitHub actions 进行自动构建和发布
首先。然后这个工作流将拉取你的 NodeJS 依赖项,安装它们并构建你的 JavaScript 应用程序。
每次您发送一个新的标签,一个测试版将在 TestFlight 中构建。
您的 App 不需要使用 Ionic,只需 Capacitor 基础是必须的,它可以有旧的 Cordova 模块,但 Capacitor JS 插件应该优先使用。
5. 触发工作流程
触发工作流程
推送新的提交到分支 main 或 development 以触发工作流程。

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

手动启动
您可以手动启动工作流程。
首先选择您要构建的应用,然后点击 开始新建.

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

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

然后点击构建以查看结果。

可以从本地机器部署
是的,您可以,而且这非常容易。
您可以使用 Xcode 构建和签署您的应用程序,正如往常一样。
感谢
本博客基于以下文章: