为iOS项目设置代码签名

本文档描述了在CircleCI 2.0上为iOS或Mac项目设置代码签名的指导原则。

iOS项目基本配置

本文档假定您已在Circleci 2.0上正确使用iOS或Mac项目构建。它还假设您使用捆绑和Fastlane,并有一个Gemfile,AppfileFastfile检查到您的回购中。

注意:使用Fastlane Match在CircleCI 2.0上设置代码签名需要添加用户密钥到你的项目。代码签名的设置与CircleCI 1.0中有很大的不同。2.0文档已经更新以反映没有使用CircleCI应用程序,只有下面的配置说明用于2.0中的代码签名。

请注意:如果你想继续不使用Fastlane Match,这篇博客提供如何使用CircleCI实现这一点的概述。

如果您还没有在CircleCI 2.0上配置您的iOS或Mac项目,您可以在在macOS文档上测试iOS应用程序

设置快速通道匹配

必须配置代码签名来生成应用程序和应用程序商店构建的特别发行版。

Fastlane匹配Fastlane工具,并且它允许在开发环境和CircleCI上对代码签名进行无缝配置。Fastlane Match将您所有的代码签名密钥和配置配置文件存储在一个GitHub存储库中,并用一个命令下载和安装必要的密钥和配置文件。

在存储库的根目录中运行bundle exec fastlane匹配init并按照说明配置匹配存储库。完成配置后,运行bundle exec fastlane匹配开发生成并安装开发密钥和概要文件,然后运行bundle exec fastlane match adhoc生成和安装特别的分发密钥和配置文件。

准备使用Fastlane Match的Xcode项目

在设置匹配之前,您必须确保您的Xcode项目中的代码签名设置配置如下:

  • 构建设置 - >代码签名样式被设定为手册
  • 构建设置->开发团队是否设置为您的开发团队ID
  • 生成设置->代码签名标识设置为:
    • iOS开发者对于调试配置
    • iOS分布对于发布配置

在目标,你将使用特别构建:

  • 生成设置——>配置配置文件(已弃用)被设置为匹配特定的配置文件。

增加匹配的快车道车道

在CircleCI上,每当你要为你的应用程序生成一个特别的构建时,都需要运行Fastlane Match。实现这一点的最简单方法是创建一个定制的快速车道。最好的做法是创建一个类似如下的Fastfile:

注意:fastlane匹配正确工作,你必须添加setup_circle_cibefore_all在你的Fastfile。这可以确保使用临时的Fastlane密钥链。

# fastlane/Fastfile default_platform:ios平台:ios做before_all做setup_circle_ci结束desc“构建和运行测试”lane:test do scan结束desc“adhoc构建”lane:adhoc做匹配(类型:“adhoc”)体育馆(export_method:“adhoc”)结束…结束

向CircleCI项目添加用户密钥

要使Fastlane Match能够从GitHub下载证书和密钥,需要向CircleCI项目添加一个用户密钥,该用户密钥可以同时访问项目回购和证书/密钥回购。在项目设置中,导航到权限-> Checkout SSH键->添加用户键并点击授权使用GitHub

注意:该操作将为CircleCI项目提供与将要单击的用户相同的GitHub权限授权使用GitHub按钮。

在你的Matchfile,git_url应该是一个SSH网址(在git@github.com:…格式),而不是HTTPSURL。否则,在尝试使用match时可能会看到身份验证错误。例如:

git_url app_identifier(“git@github.com: fastlane /证书”)(“tools.fastlane.app”)用户名(“user@fastlane.tools”)

最佳实践是创建一个只访问项目repo和密钥repo的机器用户,并使用该机器用户创建一个用户密钥,以降低授予CircleCI项目的GitHub访问级别。

添加用户密钥后,CircleCI将能够从GitHub签出项目回购和代码签名证书/密钥回购。

将匹配口令添加到加密的环境变量中

要使Fastlane Match能够解密存储在GitHub repo中的密钥和概要文件,需要将您在Match设置步骤中配置的加密口令添加到CircleCI项目的加密环境变量中。

在Circleci的项目设置中,导航到生成设置->环境变量并添加MATCH_PASSWORD变量,并将其值设置为您的加密密码。密码短语将以静态加密方式存储。

在CircleCI上调用快速车道测试车道

在配置了Match并将其调用添加到特设车道之后,可以在CircleCI上运行该车道。以下config.yml将创建一个特别的构建,每次您推开发分支机构:

# .circleci / config.yml版本:2工作:构建和测试:macos:xcode:11.3.0步骤:# inc完成构建和测试的步骤-运行:捆绑执行快速lane测试临时安排的:macos:xcode:11.3.0步骤:完成作业所需的步骤-运行:bundle exec fastlane adhoc工作流:版本:2build-test-adhoc:工作:-构建和测试-临时安排的:过滤器:分支机构:只要:开发需要:-构建和测试

示例配置文件

为iOS和Mac项目设置代码签名的最佳实践配置如下:

# fastlane/fastfile default_platform:ios平台:ios做before_all做setup_circle_ci结束desc“运行所有测试”lane:test do scan结束desc“adhoc构建”lane:adhoc做匹配(类型:“adhoc”)体育馆(export_method:“adhoc”)结束
# .circleci / config.yml版本:2.1工作:构建和测试:macos:xcode:11.3.0环境:FL_OUTPUT_DIR:输出FASTLANE_LANE:测试步骤:-结帐-运行:包安装-运行:的名字:Fastlane命令:bundle exec fastlane $FASTLANE_LANE-Store_Arifacts.:路径:输出-store_test_results.:路径:输出/扫描临时安排的:macos:xcode:11.3.0环境:FL_OUTPUT_DIR:输出FASTLANE_LANE:临时安排的步骤:-结帐-运行:包安装-运行:的名字:Fastlane命令:bundle exec fastlane $FASTLANE_LANE-Store_Arifacts.:路径:输出工作流:build-test-adhoc:工作:-构建和测试-临时安排的:过滤器:分支机构:只要:开发需要:-构建和测试

通过设置FL_OUTPUT_DIR:它将告诉Fastlane将XCode和Fastlane日志输出到该目录,这样它们就会作为工件被上传,从而方便故障排除。

GitHub上的示例应用程序

看看circleci-demo-iosGitHub库有关如何使用Fastlane Match为iOS应用程序配置代码签名的示例。