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

https://codemagic.io/zh/%E8%93%BD%E4%BB%BD/
该服务是‘免费的 每月500个macOS M1分钟,取决于所选机器.
我们将使用一个 macOS M1 机器,截图中可以看到其价格和限制(价格截至教程创建时,可能会在未来发生变化)
🔴 已知价格和要求后,如果您喜欢,我们继续…
📣 在文章中,我们假设我们已经在iTunes Connect中创建了应用,我们有Apple生态系统的证书,Codemagic将为我们设置一切!
让我们开始探索!
步骤
- 使用 App Store Connect API 与 Codemagic
- 要求
- 创建 App Store Connect API 密钥
- 使用 App Store Connect API 密钥
- 复制 Fastlane 文件
- 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需要 三个 事项。
- 发行者ID。
- 密钥ID。
- 密钥文件或密钥内容。
创建App Store Connect API密钥
要生成密钥,您必须在App Store Connect中具有管理员权限。如果您没有该权限,请将相关人员指向此文章并遵循以下说明。
1 — 登录到 App Store Connect.
2 — 选择 用户和访问.

3 — 选择API密钥选项卡。

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

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

6 — 点击生成。
一个API密钥的访问权限不能限制到特定的应用程序。
新建密钥的名称、密钥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 key 下载的文件。
-
点击 保存.
现在我们可以使用 App Store Connect API key 管理 Codemagic,太棒了!
2. 创建证书和配置文件
证书
打开 XCode,转到 设置 > 账户 > Apple ID > 类丶 和选择一为类丶。

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

很给一为类丶、下一为类丶、类丶类丁合置
很给一为类丶、下为类丶、类丶类丁合置 .p12 file.
要实现此功能,您需要切换到钥匙串中的 登录 钥匙串 我的证书.

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

并选择 App Store Connect.

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

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

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

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

添加Code签名证书
Codemagic允许您上传code签名证书作为包含证书和私钥的PKCS#12存档。当上传时,Codemagic将要求您提供证书密码(如果证书受密码保护)以及一个唯一 参考名称, 可以在此处使用以获取特定文件。 codemagic.yaml 上传证书
- 生成新证书
- 从开发者门户获取
- 打开您的Codemagic团队设置,前往
- codemagic.yaml设置 > > Code 签名身份.
- iOS证书 配置中使用此名称可以获取特定文件。 tab.
- 点击上传证书文件 选择 .p12 或 .pem 文件 或将文件拖拽到指示框内
- 输入 证书密码 并选择 参考名称.
- 点击 添加证书
添加分发配置文件
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 控制台中可用。

手动启动
您可以手动启动工作流程。
首先选择要构建的应用,然后点击 上下文: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 的实现细节。