在本教程中,您将使用极狐 GitLab CI/CD 创建一个流水线,用于构建您的 iOS 移动应用程序,使用您的凭据对其进行签名,并将其分发到应用商店。
要设置移动 DevOps:
在您开始之前
在开始本教程之前,请确保您具备以下条件:
- 一个拥有 CI/CD 流水线访问权限的极狐 GitLab 账户
- 您的移动应用代码存储在极狐 GitLab 仓库中
- 一个 Apple 开发者账户
- 本地安装了
fastlane
设置您的构建环境
使用 极狐 GitLab 托管的 runner,或设置 私有化部署 runner 以完全控制构建环境。
- 在您的仓库根目录中创建一个
.gitlab-ci.yml
文件。 -
添加一个 受支持的 macOS 镜像 以在 macOS 极狐 GitLab 托管 runner(测试版)上运行一个作业:
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 "Build and sign the application for development" 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 设置应用分发
使用移动 DevOps 分发集成,可以将签名的构建上传到 Apple App Store。
前提条件:
- 您必须拥有一个注册在 Apple 开发者计划中的 Apple ID。
- 您必须在 Apple App Store Connect 门户中为您的项目生成一个新的私钥。
要使用 Apple Store 集成和 fastlane 创建 iOS 分发:
- 为 App Store Connect API 生成一个 API 密钥。在 Apple App Store Connect 门户中,为您的项目生成一个新的私钥。
- 启用 Apple App Store Connect 集成:
- 在左侧边栏,选择 搜索或转到 并找到您的项目。
- 选择 设置 > 集成。
- 选择 Apple App Store Connect。
- 在 启用集成 下,选择 激活 复选框。
- 提供 Apple App Store Connect 配置信息:
- 发行者 ID:Apple App Store Connect 发行者 ID。
- 密钥 ID:生成的私钥的密钥 ID。
- 私钥:生成的私钥。您只能下载此密钥一次。
- 仅限受保护的分支和标签:启用以仅在受保护的分支和标签上设置变量。
- 选择 保存更改。
- 将发布步骤添加到您的流水线和 fastlane 配置中。
以下是一个示例 fastlane/Fastfile
:
default_platform(:ios)
platform :ios do
desc "Build and sign the application for distribution, upload to 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
恭喜!您的应用现已设置为自动构建、签名和分发。尝试创建一个合并请求以触发您的第一个流水线。