本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
教程:Apple CodeBuild 使用 Fastlane 进行代码签名 GitHub 用于证书存储
fastlane
此示例演示了如何在 Mac 舰队上运行的 CodeBuild项目中使用 Fastlane 设置 Apple 代码签名,并将其 GitHub 作为证书和配置文件的存储空间。
先决条件
要完成本教程,您首先必须设置以下条件:
-
一个 Amazon Web Services 账户
-
用于 GitHub 存储证书的私有存储库
-
在您的项目中安装的 fastlane - fastlane 安装指南
第 1 步:在本地计算机上设置 Fastlane GitHub Match
Fastlane Match
在此示例配置中,我们设置并使用 Git 存储库进行存储。
-
在项目中初始化匹配:
fastlane match init -
出现提示时,选择 GitHub 作为存储模式。
-
更新你的 “匹配文件” 以使用 GitHub:
git_url("https://github.com/your-username/your-certificate-repo.git") storage_mode("git") type("development") # The default type, can be: appstore, adhoc, enterprise or development
注意
请务必输入 Git 存储库的 HTTPS URL,以便 fastlane 成功进行身份验证和克隆。否则,当您尝试使用匹配时,可能会看到身份验证错误。
步骤 2:设置 Fastfile
使用以下通道创建或更新您的“Fastfile”。
开启 CodeBuild,每次构建和签署应用程序时,都需要运行 Fastlane Match。执行此操作的最简单方法是将 match 操作添加到构建应用程序的通道中。
default_platform(:ios) platform :ios do before_all do setup_ci end desc "Build and sign the app" lane :build do match(type: "appstore", readonly: true) gym( scheme: "YourScheme", export_method: "app-store" ) end end
注意
请务必将 setup_ci 添加至 Fastfile 中的 before_all 部分,以使匹配操作正常运行。这样可以确保使用具有适当权限的临时 Fastlane 密钥链。如果不使用它,您可能会看到构建失败或结果不一致。
步骤 3:运行 fastlane match 命令以生成相应的证书和配置文件
给定类型(即开发、应用商店、临时、企业)的 fastlane match 命令将生成证书和配置文件(如果远程存储中未提供)。证书和配置文件将 GitHub 由 fastlane 存储在中。
bundle exec fastlane match appstore
命令执行将是交互式的,fastlane 将要求设置密码短语来解密证书。
步骤 4:为项目创建应用程序文件
根据项目的需要创建或添加应用程序文件。
-
根据项目构建要求创建或添加 Gymfile
、Appfile 、Snapfile 、Deliverfile 。 -
将更改提交到远程存储库。
步骤 5:在 Secrets Manager 中创建环境变量
创建三个用于存储 fastlane 会话 cookie 和匹配密码短语的密钥。有关在 Secrets Manager 中创建密钥的更多信息,请参阅创建 Amazon Secrets Manager 密钥。
-
按如下方式访问 fastlane 会话 cookie。
-
秘密密钥:
FASTLANE_SESSION -
密钥值:在本地计算机上运行以下命令时生成的会话 cookie。
注意
完成身份验证后,此值会保存在本地文件
~/.fastlane/spaceship/my_appleid_username/cookie中。fastlane spaceauth -u <Apple_account>
-
-
Fastlane Match 密码短语-要启用 Fastlane Match 来解密存储在 Git 存储库中的证书和配置文件,必须将您在匹配设置步骤中配置的加密密码添加到项目的环境变量中。 CodeBuild
-
秘密密钥:
MATCH_PASSWORD -
密钥值:
<match passphrase to decrypt certificates>。密码短语是在步骤 3 中生成证书时设置的。
-
-
Fastlane
MATCH_GIT_BASIC_AUTHORIZATION:为匹配设置基本授权:-
秘密密钥:
MATCH_GIT_BASIC_AUTHORIZATION -
密钥值:该值应是您的用户名和个人访问令牌(PAT)的 base64 编码字符串,格式为
username:password。您可以使用以下命令生成它:echo -nyour_github_username:your_personal_access_token| base64你可以在 GitHub 主机的 “我的个人资料” > “设置” > “开发者设置” > “个人访问令牌” 中生成 P AT。有关更多信息,请参阅以下指南:https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens
。
-
注意
在 Secrets Manager 中创建上述密钥时,请记得提供一个带有以下前缀的密钥名称:/CodeBuild/
步骤 6:创建计算实例集
为您的项目创建计算实例集。
-
在控制台中,前往 CodeBuild 并创建新的计算队列。
-
选择
macOS作为操作系统,然后选择适当的计算类型和映像。
第 7 步:在中创建项目 CodeBuild
在中创建您的项目 CodeBuild。
在 https://console.aws.amazon.com/codesuite/codebuild
/home 中打开 Amazon CodeBuild 控制台。 -
创建构建项目。有关信息,请参阅创建构建项目(控制台)和运行构建(控制台)。
-
设置您的源提供商(例如 GitHub, CodeCommit)。这是 iOS 项目源存储库,而不是证书存储库。
-
在环境中:
-
选择预留容量。
-
对于实例集,选择上面创建的实例集。
-
提供 CodeBuild 将为您创建的服务角色的名称。
-
提供以下环境变量。
-
名称:
MATCH_PASSWORD,值:<secrets arn>,类型:Secrets Manager(在步骤 5 中为 MATCH_PASSWORD 创建的 Secrets ARN) -
名称:
FASTLANE_SESSION,值:<secrets arn>,类型:Secrets Manager(在步骤 5 中为 FASTLANE_SESSION 创建的 Secrets ARN) -
名称:
MATCH_GIT_BASIC_AUTHORIZATION,值:<secrets ARN>,类型:Secrets Manager Secrets ARN(在步骤 5 中为创建的)MATCH_GIT_BASIC_AUTHORIZATION
-
-
-
在 Buildspec 中,添加以下内容:
version: 0.2 phases: install: commands: - gem install bundler - bundle install build: commands: - echo "Building and signing the app..." - bundle exec fastlane build post_build: commands: - echo "Build completed on date" artifacts: files: - '*/.ipa' name: app-$(date +%Y-%m-%d)
第 8 步:运行构建
运行构建。您可以查看构建状态并登录 CodeBuild。
作业完成后,您将能够查看该作业的日志。
问题排查
-
如果您在访问 GitHub 存储库时遇到问题,请仔细检查您的个人访问令牌和 MATCH_GIT_BASIC_AUTHORIZATION 环境变量。
-
如果您在证书解密时遇到问题,请确保在 MATCH_PASSWORD 环境变量中设置了正确的密码短语。
-
对于代码签名问题,请验证您的 Apple 开发人员账户是否具有必要的证书和配置文件,并且 Xcode 项目中的捆绑包标识符是否与预调配配置文件中的捆绑包标识符匹配。
安全注意事项
以下是本教程的安全注意事项。
-
将您的证书 GitHub 存储库保密,并定期审核访问权限。
-
考虑使用来存储敏感信息 Amazon Secrets Manager ,例如 MATCH_PASSWORD 和 FASTLANE_SESSION。
此示例提供了 CodeBuild 使用 Fastlane 进行 iOS 代码签名的设置, GitHub用于证书存储。您可能需要根据具体的项目要求和 CodeBuild 环境调整一些步骤。这种方法利用 Amazon 服务来增强 Amazon 生态系统中的安全性和集成。