Xcode9 + Xcode Server =全面的iOS持续集成

在WWDC 2017上,Apple宣布了几乎所有iOS开发人员都满意的东西,主题为“Xcode和Xcode Server的签名新功能”。 很难解释,使用Xcode 9和Xcode Server在Apple平台(尤其是iOS和macOS)上执行持续集成变得多么容易。

Xcode 9之前的CI

Xcode 9发行之前的iOS持续集成非常具有挑战性。 人们可能会尝试跟随

  • 为使用证书和配置文件设置CI服务器计算机而进行了长期的战斗。
  • 使用诸如Fastlane之类的基于Ruby的工具来自动化分析,构建,测试和代码签名的过程。
  • 使用其他第三方云CI服务(例如TravisCI,CircleCI)或自托管解决方案(例如Jenkins,TeamCity)来使用bash脚本构建或Fastlane的自动构建
  • 使用了诸如Facebook的xctool或LinkedIn的Bluepill之类的工具来并行化多个设备和模拟器上的测试。
  • 使用第三方基于Ruby的工具(例如xcov,xcpretty)进行代码覆盖和测试报告。
  • 将Xcode Server与macOS Server应用程序和Xcode Service for CI一起使用,但仍在与代码签名和并行执行作斗争。

带有Xcode 9的Xcode Server满足了所有这些要求。 您现在很少需要上面的东西。 Xcode Server可以轻松地为我们处理所有这一切。 感谢所有致力于开发人员工具以实现这一目标的开发人员。 让我们看看有什么变化

Xcode 9之后的CI

在Xcode 9中,我们在Xcode中集成了以下与CI相关的新功能

  • Xcode Server内置Xcode 9,因此无需单独的macOS应用。
  • Xcode Server bot具有新的选项卡,可在自动配置设备的多个设备和模拟器上进行代码签名和并行测试。
  • 开发和发行签名的自动签名。
  • Xcode Server通过自动或手动签名创建分发IPA
  • Xcode Sever不再启动仍然可以并行运行的模拟器。

现在,我们将看到实际上如何轻松设置和使用Xcode Server。

设置Xcode服务器

如前所述,Xcode Server不再需要macOS Server应用程序,它现在内置在Xcode中。 我们可以在Xcode Preference中看到“ Servers&Bots”标签。 我们可以使用本地Mac或其他Mac设置Xcode Server。 我们需要选择Mac和Integration用户。 请参阅下面的GIF以了解启用Xcode Server的过程。

服务运行后,我们很高兴创建Xcode机器人来执行持续集成。 在本教程中,我们将为macOS和iOS应用程序创建一个机器人。 我们将为macOS创建Bot for Swift软件包XCFit,为iOS创建演示应用程序XCS-Demo。

为iOS应用创建Bot — iOS

我们将使用适用于iOS的演示应用程序XCS-Demo来设置Xcode Server。 我们有常规步骤从Xcode“产品->创建Bot”创建机器人,并将该机器人命名为“ XCFit Bot”。 下一步是将Github Repo添加到Bot。 我们必须使用SSH添加Git Repo。 Xcode将要求您信任身份存储库。 您必须选择“信任”并使用现有SSH密钥的凭据。 成功授权后,我们应该能够配置构建。 构建配置是配置我们要作为构建一部分执行的主要阶段。 我们将看到以下主要配置选项。

  • 方案
  • 动作-分析,测试,存档和
  • 构型

下一个屏幕将安排Bot集成,这是不言自明的。

接下来,我们可以选择添加代码签名。 我们可以选择授予Xcode Server访问开发人员门户的权限,它将为我们做一切。 我们还有其他选择,可以从服务器计算机中选择证书进行手动签名。

自动代码签名

平行测试

我们单击下一步,我们看到已经选择了要测试的设备,并且存在“并行运行测试”复选框,该复选框允许在多个模拟器上并行执行。

测试报告

机器人完成运行测试后,我们会在Xcode本身中得到一些不错的报告。 Xcode Server中的测试报告如下所示:

观看实战

整个动作如下所示:

为Swift软件包创建Bots-macOS

Swift程序包不需要在模拟器或设备中运行。 我们可以在macOS上运行它们。 让我们为Swift软件包XCFit创建一个机器人。 比iOS更简单,更快捷

好处

我们刚刚看到了Xcode Server的一些闪亮的新功能,但是将为企业或团队带来什么好处?

  • 无需编写用于构建自动化的脚本或管理证书和配置文件的CI服务器
  • 通过单击几下即可设置Xcode Server,我们可以实现持续交付

缺少功能

虽然,苹果工程师使Xcode Server变得很棒,但是仍然缺少一些功能

  • 支持测试拉取请求,就像TravisCI一样
  • 将IPA上载到iTunes Connect或TestFlight
  • 您还有其他想法吗?

结论

使用Xcode 9和Xcode Server,我们几乎可以将所有东西都放在一个地方。 是时候从工具箱中撤消许多工具了,例如Fastlane,Facebook的xctool或LinkedIn的Bluepill或其他CI服务器(如TravisCI,CircleCI)或自托管CI解决方案(如Jenkins,TeamCity)。 是时候完全切换到Xcode Server了。

像XCBlog的 XCTEQ 发布的帖子一样 您可能还喜欢我们的一些服务,例如访客博客或Mobile DevOps(CI / CD)或测试自动化。 Github 搜索我们的 服务 ,开源项目, 或者在 Twitter Facebook Youtube LinkedIn 上关注我们 下载我们的 XCBlog iOS应用程序以离线阅读博客。

X CTEQ 一家专门从事基于Mobile DevOps,CI / CD,Mobile,AI / ML的测试自动化Checkout XCTEQ产品和服务的公司, 网址 http://www.xcteq.co.uk 或写信给我们info@xcteq.co。英国..