为iOS设置Fastlane MATCH

在本文中,我将向您展示如何创建快速通道匹配以自动化构建和发布移动应用程序的过程。

注意如果要添加现有证书以匹配git repo,请转到步骤9

什么是快车道?

Fastlane是旨在简化Android和iOS部署的开源平台。
fastlane使您可以自动化开发和发布工作流程的各个方面。

  1. 自动截图 -自动为应用商店生成本地化的截图。
  2. Beta部署 -轻松为测试人员分发Beta版本。
  3. App Store部署 -在几秒钟内将新版本发布到App Store。
  4. 代码签名 -可靠,一致地对您的应用程序进行代码签名,不再麻烦。

—设置快速通道匹配:

什么是快车道比赛?

iOS代码签名的新方法:在整个开发团队中共享一个代码签名标识,以简化代码签名设置并防止代码签名问题。

match创建所有必需的证书和配置文件,并将它们存储在单独的git存储库中。 每个有权访问该存储库的团队成员都可以使用这些凭据进行代码签名。 匹配还会自动修复损坏和过期的凭据。 这是在团队之间共享签名凭证的最简单方法。

在设置Fastlane匹配之前,让我们先在本地计算机上安装Fastlane,

 须藤宝石安装fastlane 

第1步创建一个git仓库。

创建一个新的私有Git存储库(例如,在bitbucket.org/xxx中的特定项目中),您可以将其命名为 certificate

注意 :确保将存储库设置为 私有

步骤2: Apple开发人员帐户

创建一个新的共享Apple开发人员帐户(例如projectname@company.com),此帐户将在您的团队之间共享。

如果您已经拥有一个,请忽略此步骤。 您还可以在匹配文件中添加Apple帐户的用户名和密码字段(您将了解匹配文件)。

步骤3设置SSH密钥

为您的git帐户设置ssh密钥,以克隆将由fastlane匹配文件使用的存储库。

这很重要,因为匹配需要用户名和密码才能访问git repo。 没有身份验证,构建将失败。

使用SSH,您可以对将存储证书和配置文件的存储库进行身份验证。

步骤4: 启动快速通道

为您的项目文件夹启动fastlane(其中包含.xcworkspace或.xcodeproj)

 快速通道初始化 
  project1 $:快速通道初始化 
  [17:13:06]:在当前目录中检测到iOS / Mac项目... 
[17:13:06]:此设置将帮助您立即启动并运行。
[17:13:06]:fastlane将检查您已经在使用哪些工具并进行设置
[17:13:06]:该工具会自动为您提供。 玩得开心!
[17:13:06]:创建了新文件夹“ ./fastlane”。
[17:13:06]:$ xcodebuild -list -workspace ./project1.xcworkspace
2017-06-20 17:13:07.122 xcodebuild [65932:6932431] [MT] PluginLoading:必需的插件兼容性UUID DFFB3951-EB0A-4C09-9DAC-5F2D28CC839C用于路径'〜/ Library / Application Support / DVTPlugInCompatibilityUUID中不存在Developer / Shared / Xcode / Plug-ins / SwiftLintXcode.xcplugin'
[17:13:08]:$ xcodebuild -showBuildSettings -workspace ./project1.xcworkspace -scheme project1
2017-06-20 17:13:08.331 xcodebuild [65937:6932494] [MT] PluginLoading:必需的插件兼容性UUID DFFB3951-EB0A-4C09-9DAC-5F2D28CC839C用于路径'〜/ Library / Application Support / DVTPlugInCompatibilityUUID中不存在Developer / Shared / Xcode / Plug-ins / SwiftLintXcode.xcplugin'
[17:13:09]:您的Apple ID(例如fastlane@krausefx.com):member@project.com
验证该应用程序在Apple Developer Portal和iTunes Connect上是否可用...
[17:15:49]:使用用户“ member@project.com”开始登录

在项目文件夹中创建了 一个名为 fastlane 的文件夹。 它最初包含三个文件,其中两个很重要。

  1. AppfileAppfile存储有用的信息,这些信息可在所有快速通道工具(如Apple ID或应用程序捆绑包标识符)中使用 ,以更快地部署通道并根据项目需求量身定制

应用档案

这将在当前目录(或您的./ fastlane / folder)中创建一个matchfile文件。

默认情况下,它包含网址,应用程序标识符,git用户名。

这将为所选类型( development adhoc enterprise, appstore 创建一个新的证书和配置文件(如果需要 ),并将它们存储在您的Git存储库中。 如果您以前运行过 match ,它将自动从Git存储库中安装现有的配置文件。

供应配置文件安装在~/Library/MobileDevice/Provisioning Profiles而证书和私钥则安装在本地钥匙串中。

注意 :要获取match详细信息,请使用

 快车道比赛-详细 

你们都完成了!!!!!!!!!!!!!!!!!!

步骤8将内部版本上传到crashlytics(可选)

尝试将构建从本地计算机上载到Fabric,以确保一切正常。

确保在结构中要上传的应用程序具有api_keybuild_secret

由于我们已经在fastfile配置了beta通道以将构建上传到crashlytics。

从项目文件夹运行以下命令。

  Fastlane Beta 

步骤9(可选):手动将现有证书添加到git存储库。

警告 :手动编辑您的比赛回购可能会导致意外行为,因此不建议这样做。 请谨慎操作。

注意: GitHelper不再起作用。 Fastlane最近更新了该过程。

在终端中运行以下命令:

  $捆绑控制台 

然后,要求匹配并设置适当的参数:

  irb(main):001:0>需要“匹配” 
irb(main):002:0> git_url ='https://github.com/fastlane/example-certificate-repo'
=> “ https://github.com/fastlane/example certificate-repo”
irb(main):003:0>浅克隆=假
=>错误
irb(main):004:0> ENV [“ MATCH_PASSWORD”] ='示例密码'
=> “示例密码”
irb(main):005:0> branch ='master'
=> “大师”

现在创建一个StorageEncryption实例。 Storage上的download方法将克隆该Storage库,而Encryption上的decrypt_files方法将为您解密该存储库。 将返回值分配给storageencrypt ,稍后在重新加密时将需要它们:

  irb(main):006:0> storage = Match :: Storage.for_mode(“ git”,{git_url:git_url,浅层克隆:浅层克隆,git_branch:分支,clone_branch_direct:false}) 
  irb(main):007:0> storage.download 
  irb(main):008:0>加密= Match :: Encryption.for_storage_mode(“ git”,{git_url:git_url,working_directory:storage.working_directory}) 
  irb(main):009:0> encryption.decrypt_files 
[14:24:42]:🔓成功解密证书回购

irb(main):010:0> storage.working_directory
=> “ / var / folders / ql / 4rgq9x7j51n_971xb332w9lc0000gn / T / d20181105-65220-1oalh6v”

/var/folders开头的目录包含解密的git repo。 根据需要对其进行修改。

如果您要更新 .p12 文件,请确保它是从钥匙串中导出的而没有密码,因为match不支持导入带有密码的私钥。

警告:请勿提交更改。 允许fastlane为您做到这一点。

在Ruby控制台中,调用encryption.encryptstorage.save_changes! 。 例如:

  irb(main):010:0> encryption.encrypt_files 
  irb(main):011:0> files_to_commit = Dir [File.join(storage.working_directory,“ **”,“ *。{cer,p12,mobileprovision}”)]] 
  irb(main):012:0> storage.save_changes!(files_to_commit:files_to_commit) 

或者,如果您不想指定files_to_commit,则:

  irb(main):010:0> encryption.encrypt 
  irb(main):011:0> storage.save_changes! 

您的更改将被加密,提交和推送

注意: 如果您的钥匙串不包含加密密码,则可能会提示您输入密码。 如果是这样,只需输入用于解密的密码即可。

有关更多信息: 点击这里

结论:

Fastlane照顾

  1. 验证Apple开发人员帐户。
  2. 验证git repo。
  3. 安装证书(如果不可用,它将创建所需的证书和配置文件)。
  4. 编译项目。
  5. 代码签名。
  6. 将.ipa上载到结构。

问题:

在此过程中,您可能会遇到一些问题。 我已经介绍了在此设置过程中遇到的一些问题。

  1. Apple开发人员帐户的身份验证错误。
  2. 找不到用于代码签名的证书(使用已安装的证书和git repo中的配置文件在xcode中设置项目。)
  3. 没有匹配的代码签名实体。
  4. 如果您在Apple开发人员门户中手动更新这些证书,则git repo中的证书将过时并且没有用。 确保您手动更新了git repo。
  5. 由于git repo已加密且受密码保护,因此无法克隆git repo并更新证书和配置文件。

如果您发现本文有所帮助,请别忘了鼓掌。

谢谢!!