教程:使用 GitLab Mobile DevOps 构建 iOS 应用
在本教程中,您将使用 GitLab CI/CD 创建一个流水线,该流水线会构建您的 iOS 移动应用,使用您的凭据对其进行签名,并将其分发到应用商店。
要设置移动 DevOps:
开始之前
在开始本教程之前,请确保您拥有:
- 一个有权访问 CI/CD 流水线的 GitLab 账户
- 您的移动应用代码位于一个 GitLab 仓库中
- 一个 Apple Developer 账户
- 已在本地安装
fastlane
设置您的构建环境
使用 GitLab 托管的运行器, 或设置 自管理运行器 来完全控制您的构建环境。
-
在您的仓库根目录中创建一个
.gitlab-ci.yml文件。 -
添加一个 受支持的 macOS 镜像,以便在 macOS GitLab 托管运行器(测试版)上运行作业:
test: image: macos-14-xcode-15 stage: test script: - fastlane test tags: - saas-macos-medium-m1
使用 fastlane 配置代码签名
要为 iOS 设置代码签名,请使用 fastlane 将已签名的证书上传到 GitLab:
-
初始化 fastlane:
fastlane init -
生成一个带有配置的
Matchfile:fastlane match init -
在 Apple Developer 门户中生成证书和配置文件,并将这些文件上传到 GitLab:
PRIVATE_TOKEN=YOUR-TOKEN bundle exec fastlane match development -
可选。如果您已经为您的项目创建了签名证书和配置文件,请使用
fastlane match import将您现有的文件加载到 GitLab 中:PRIVATE_TOKEN=YOUR-TOKEN bundle exec fastlane match import
系统会提示您输入文件的路径。提供这些详细信息后,您的文件将被上传,并在您项目的 CI/CD 设置中可见。
如果在导入过程中提示输入 git_url,可以安全地将其留空并按下 enter 键。
以下是使用此配置的示例 fastlane/Fastfile 和 .gitlab-ci.yml 文件:
-
fastlane/Fastfile:default_platform(:ios) platform :ios do desc "为开发构建并签名应用程序" lane :build do setup_ci match(type: 'development', readonly: is_ci) build_app( project: "ios demo.xcodeproj", scheme: "ios demo", configuration: "Debug", export_method: "development" ) end end -
.gitlab-ci.yml:build_ios: image: macos-12-xcode-14 stage: build script: - fastlane build tags: - saas-macos-medium-m1
使用 Apple Store 集成和 fastlane 设置应用分发
已签名的构建版本可以通过 Mobile DevOps Distribution 集成上传到 Apple App Store。
先决条件:
- 您必须拥有一个已注册 Apple Developer Program 的 Apple ID。
- 您必须在 Apple App Store Connect 门户中为您的项目生成一个新的私钥。
要使用 Apple Store 集成和 fastlane 创建 iOS 分发:
- 为 App Store Connect API 生成一个 API 密钥。在 Apple App Store Connect 门户中,为您的项目生成一个新的私钥。
- 启用 Apple App Store Connect 集成:
- 在左侧边栏,选择 Search or go to 并找到您的项目。
- 选择 Settings > Integrations。
- 选择 Apple App Store Connect。
- 在 Enable integration 下,勾选 Active 复选框。
- 提供 Apple App Store Connect 配置信息:
- Issuer ID:Apple App Store Connect 的发行者 ID。
- Key ID:所生成私钥的密钥 ID。
- Private key:生成的私钥。此密钥只能下载一次。
- Protected branches and tags only:仅启用以在受保护的分支和标签上设置变量。
- 选择 Save changes。
- 将发布步骤添加到您的流水线和 fastlane 配置中。
以下是示例 fastlane/Fastfile:
default_platform(:ios)
platform :ios do
desc "为分发构建并签名应用程序,上传到 TestFlight"
lane :beta do
setup_ci
match(type: 'appstore', readonly: is_ci)
app_store_connect_api_key
increment_build_number(
build_number: latest_testflight_build_number(initial_build_number: 1) + 1,
xcodeproj: "ios demo.xcodeproj"
)
build_app(
project: "ios demo.xcodeproj",
scheme: "ios demo",
configuration: "Release",
export_method: "app-store"
)
upload_to_testflight
end
end以下是示例 .gitlab-ci.yml:
beta_ios:
image: macos-12-xcode-14
stage: beta
script:
- fastlane beta恭喜!您的应用现已设置为自动构建、签名和分发。尝试创建一个合并请求来触发您的第一个流水线。
示例项目
提供了配置了用于构建、签名和发布移动应用的流水线的示例 Mobile DevOps 项目:
- Android
- Flutter
- iOS
在 Mobile DevOps Demo Projects 组中查看所有项目。