iOS与Xcode Server持续集成的入门指南

Apple在Xcode Server以及与OSX Server(应用程序)和Xcode Server(服务器应用程序内的Xcode)的持续集成方面拥有非常全面的文档。 如果指南中记录了所有内容,您可能想知道这篇文章的意义是什么? 但是,Apple指南仍比macOS Server读作OSX Server,但Apple发布了新的macOS Server(5.2),并对Automated Xcode Builds进行了一些改进。 无论如何,这都是一个小教程,旨在设置Mac以使其作为具有Xcode Service的macOS服务器运行,以及为具有Xcode 8的macOS服务器设置基本Xcode Bot以执行持续集成。 我们将介绍macOS Server的基础知识和设置

  1. 配置Xcode以使用macOS Server的Xcode服务
  2. 设置开发Xcode以在macOS服务器上使用Xcode Server
  3. 使用Github上的XCFit Swift Package示例创建Xcode机器人
  4. 运行Bot集成并分析结果

要求

为了使用macOS Server和Xcode Service设置持续集成,我们需要

  • 安装了macOS Server 5.2应用程序的Mac或Mac Mini。 从App Store下载
  • 服务器上安装了Xcode 8。 从App Store下载
  • 确保已安装Swift 3
  • Github上托管的Xcode Project存储库(本教程可选)
  • 我们可以从中触发Xcode机器人的另一台开发Mac(本教程为可选)

macOS Server 5.2的新功能

Apple已将其旧的OSX Server重命名为macOS Server,它具有许多新功能,例如配置文件管理器,缓存服务器,NFS,Xsan 5等,但让我们关注Xcode Service的新功能。

  • macOS Server不支持旧的Xcode版本。 支持Xcode 8+
  • macOS Server不支持旧的Swift版本。 支持Swift 3+。 在这里阅读
  • 当服务器应用程序升级到5.2即macOS Server时,在OSX Server和Xcode Server上运行的Xcode bot会损坏。 阅读服务器应用程序的客户评论。

这意味着使用此版本中的一些重大更改可能会影响当前使用Xcode Server的CI系统。 新的macOS服务器将具有以下功能。

  • 自定义环境变量

这不是什么新鲜事物,但是Xcode 8现在允许我们设置环境变量,而无需创建额外的方案。

  • 提前触发编辑

macOS Server现在将具有两种类型的触发器,即脚本触发器和电子邮件触发器。 现在,我们将控制如何设置电子邮件包含。

  • 问题跟踪与指责

Xcode Server将向破坏构建的人发送电子邮件。 现在,我们可以配置漫游器,而不用更改代码。

  • 升级整合

现在,如果Xcode Server使用相同的版本失败,则它会重新集成您的项目。 这也可以防止因损坏的构建而受到指责。

  • 可配置的集成用户

Xcode Server现在将拥有自己的用户Xcode Server,该用户可以像任何普通macOS用户一样使用密码进行完全控制。 在Xcode Server中设置新用户似乎相当容易。

现在,我们将看到如何为我们的新Mac或Mac Mini设置macOS服务器。

设置macOS服务器

假设您已经在Mac上下载了Xcode 8,还下载了macOS Server 5.2 App,这可能会花费一些钱,但是如果您已经拥有开发者帐户,则可以免费兑换该产品。

启动服务器应用

下载后,我们可以从“应用程序或任务控制”中启动“服务器”应用程序。 macOS服务器将启动

首次启动后,它将向您展示整个教程,说明如何将新的macOS Server用于所有服务。

您可以在教程中阅读有关macOS服务器服务的更多信息。

选择Mac

下一步是macOS Server,将询问“选择Mac”,选择“ This Mac”,因为我们为Xcode Server设置了相同的Mac

选择用户以运行集成

现在,下一步是“选择用户”以运行Xcode Bot Integrations,我们可以使用已登录的相同用途,但可以选择使用其他用户“ Xcode Server”。 将有一个创建新用户的选项。

我们将使用同一用户运行测试,以避免用户交换。 我的用户名是“ shashi”

现在,macOS Server将花费一些时间进行配置,然后我们将能够连接到macOS Server。

为Xcode服务配置Xcode

macOS Server还有很多其他服务,但是我们需要“ Xcode”服务,这是一项“持续集成”服务,可以自动执行代码的静态分析,构建应用程序,运行测试,存档应用程序,报告代码覆盖率,报告测试结果,发送通知等。现在,使用Git存储库的开发人员可以通过创建Xcode Bots触发集成。 Xcode集成可以在代码更改后或定期进行手动触发。

现在,我们有了各种设置,例如选择Xcode,设置用户权限,配置开发团队和开发设备。

选择Xcode

下一步是从macOS Server配置“ Xcode”服务以运行我们的集成。 现在,从“服务器”应用中选择“ Xcode”服务,然后选择在Mac上安装的Xcode 8应用。

选择用户进行测试

现在,我们可以在此处选择使用,以运行由Xcode“ bot”触发的测试或集成。 我们已经创建了“ Xcode Server”用户,但是它可以是任何用户。 如果愿意,我们可以切换用户。 授予该用户管理权限不是一个好主意,因为它不是必需的。

选择开发团队和设备

现在是时候使用我们的Apple ID配置我们的开发团队的详细信息了。 我们需要已配置的配置文件,已通过认证。 我们也可以将真实设备添加到服务器。 将配置好的设备连接到Mac后,它将开始出现在设备列表中。

添加您的Git回购

假设您是在GitHub存储库上工作的开发人员团队。 我们可以将GitHub存储库添加到我们的Xcode服务中。 我们可以使用SSH或HTTP设置“存储库访问”。 “存储库创建者”,最后是一个按钮,用于添加要存储在Xcode Server上的多个存储库。 您也可以从“ Xcode Bot设置”中进行操作,我们将在后面的文章中介绍。 让我们添加名为“ XCFit”的Swift软件包作为Git Repo

开启Xcode服务

完成所有设置后,通过单击按钮打开Xcode Service。 您应该在通知服务中看到该内容,如下所示。

在此阶段,带有macOS Server的Mac将接受Xcode Bot触发的任何集成。 现在,开发人员可以根据需要创建Bot,我们的Mac将能够运行这些集成。

与团队共享服务器详细信息

我们刚刚完成了在Mac上运行Xcode Bot的所有必要设置。 现在是时候将服务器详细信息分享给开发团队,以便他们可以在安装了Xcode的单独开发Mac上配置macOS Server。 详细信息在主服务器选项卡上。 详细信息将

  • 主机名和IP地址
  • 通过用户名和密码进行SSH访问
  • 要使用的网络

开发人员将使用这些详细信息来配置本地开发Xcode以连接到Xcode Server。

配置Xcode以使用Xcode Server

现在,我们已经完全设置了macOS Sever,以运行Xcode“机器人”。 我们需要配置本地开发Xcode以连接到安装在macOS服务器上的Xcode服务。 我们具有要配置的服务器的所有详细信息。 我们将配置相同的Mac以连接到本地Xcode Server,但理想情况下,将有其他开发Mac连接到Xcode Server。

添加服务器

为了将macOS服务器添加到Xcode,启动您正在处理的Xcode项目,然后在底部选择“ Xcode->首选项->帐户”,单击“ +”号以查看“添加服务器”选项。

将有一个选择服务器或连接到主机的选项。 选择我们刚刚配置的服务器。

添加集成用户

在下一个屏幕上,我们将看到在macOS Server上登录用户的选项。 我们必须使用已设置运行集成的用户登录,否则Xcode Server将显示错误。 我们已经将我的用户“ shashi”配置为运行集成,因此可以使用该用户登录服务器。

成功添加用户后,我们应该看到服务器状态为“ ON ”的屏幕。 它看起来应该像这样:

在此阶段,我们已将本地Xcode配置为使用macOS Server。 现在,我们应该能够创建Xcode Bot。

创建Xcode机器人

Xcode Bot与Jenkins中的Jobs或TravisCI中的Projects相似。 我们必须配置一套自动化指令来检出源代码,构建,测试和通知等。Xcode Bot的好处是我们可以直接从Xcode配置Bot。 我们可以在Xcode的“测试导航器”中看到所有创建的Bot。 我们将使用“ XCFit” GitHub存储库来配置机器人。

从Github克隆项目,然后在Xcode中打开项目。

  $ git clone git@github.com:Shashikant86 / XCFit.git 
  $打开XCFit.xcodeproj 

这将在Xcode中打开“产品->创建Bot”项目,并将该机器人命名为“ XCFit Bot”

使用SSH凭证添加存储库

下一步是将Github Repo添加到Bot。 我们必须使用SSH添加Git Repo。 Xcode将要求您信任身份存储库。 您必须选择“信任”并使用现有SSH密钥的凭据

成功授权后,我们应该能够配置构建。

添加构建配置

构建配置是配置我们要作为构建一部分执行的主要阶段。 Xcode Bot有一些选项,例如

  • 方案—构建的Xcode方案
  • 动作-我们必须在启用代码覆盖率的情况下勾选“执行静态分析”和“执行测试动作”。 在此阶段,我们不需要“执行存档操作”,因为它只是一个Swift软件包。
  • 清洁和配置:将此默认设置保持为“从不”和“使用方案设置”

就是这样来构建我们的Xcode Bot。

时间表

然后,我们可以在需要构建Xcode bot时安排构建时间。 有三个主要的选项可以构建或集成Xcode Bot。

  • 定期:此选项可以在特定时间“每日”,“每周”和“每小时”集成Xcode Bot。
  • 提交时:每次提交到Git存储库后,此Xcode Bot将被集成。
  • 手动:我们必须手动单击“集成”以执行Xcode Bot集成。

设备

有一个选项可以选择要在其上运行集成的设备。 我们可以在真实设备或模拟器上运行测试。 连接到Xcode服务器的已配置设备将出现在列表中。 我们有各种OS组合,可在macOS,iOS,tvOS和watchOS上运行集成。

在我们的案例中,我们没有任何iOS设备或模拟器,因为它是Swift软件包,可以在Mac上运行。 如果我们使用的是iOS App,则可以选择特定的设备或iOS模拟器。 现在,我们将为此Bot选择“ macOS”。

环境变量

可以使用自定义环境变量或使用预定义变量来执行集成。 Xcode Server环境变量的完整列表在这里。 在我们的例子中,我们不需要选择任何变量。

扳机

触发器是Xcode Bot集成之前或之后要执行的一组操作。 Xcode Bot具有以下可用触发器

  • 集成前脚本:我们可以添加bash脚本以在集成开始之前运行
  • 集成后脚本:集成完成后要执行的Bash脚本
  • 在新问题上发送电子邮件:出现新问题时通过电子邮件发送通知
  • 定期电子邮件报告:定期间隔后的电子邮件通知。

我们不需要为XCFit Bot选择任何触发器。 现在,您应该看到消息,我们已经成功配置了Bot。

运行集成并分析结果

配置Xcode Bot后,它将自动启动Integration。 典型的集成将签出源代码,并执行“构建配置”中定义的所有操作。在集成结束时,我们将看到集成摘要。

我们还可以选择查看“测试”,“代码覆盖率日志”。

Xcode机器人在行动

现在,让我们观看我们在一个动作中描述的一切。 您可以在此处观看有关此内容的Youtube视频或观看gif动画。

恭喜你 我们已经成功配置了Xcode Bot和Performed Integrations。

Xcode服务器的WWDC技巧

  • 为Xcode服务器分配专用用户
  • 切勿向Xcode Server用户授予管理员权限
  • 保持登录状态并禁用屏幕锁定
  • 定制需求,例如预配置和模拟器

希望本文对将Xcode Server设置为iOS的持续集成服务器有用。 谢谢阅读。 如果您在设置时遇到任何困难,请告诉我。 快乐CI

像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。英国..