如何通过三个相对简单的步骤为iOS设置GitLab CI

提示:一点都不难。

感谢Angelo Stavrow在2016年发布的帖子,我自己的GitLab设置以及这篇帖子都变得生动起来。让这一切变得有趣起来,在果酱中添加Fastlane,在这篇文章的末尾找到我的下一篇文章的链接。

介绍

作为开发人员,不论年龄大小,职称,无论我们是年轻人还是老人,我们都听说过CI / CD和可用的工具-例如,如果您的项目是开源的,则有很多付费的工具,而另一些则免费的。 酷,我知道。 但是关于不是开源的工作呢? 如果您使用的是GitLab,那么您会很幸运,因为无论项目如何,它都免费提供了内置的CI。 这听起来像是一个很棒的计划:-)。

我不会解释什么是CI / CD,您可以轻松地将其搜索出来。 但是我需要指出的是,至少对我自己而言,拥有CI的更大优势在于,它将使您能够编写那些拖延已久的测试。 因此,让我们这样做。

此帖子使用什么设置?

  • 运行macOS Sierra 10.12.6的 Mac mini
  • 带有iOS 10.3 SDK的 Xcode 8.3.3

第一步-设置您的Xcode项目

  • 首先创建包含单元和/或UI测试的项目并将其与相应的GitLab存储库链接。
  • 确实,确实要确保共享项目的方案 ,否则GitLab CI无法找到构建和测试项目所需的上下文。 为此,您需要在Xcode中打开项目,然后从标签菜单中选择产品 > 方案 > 管理方案
  • 当菜单窗口出现时,勾选与您的项目方案相对应的“ 共享”框 ,然后单击“ 关闭”按钮

无需共享任何依赖关系方案。

  • 完成上述步骤后,即可进行提交和推送。

一个好主意是获取xcpretty 将构建的输出转换为更具可读性的方式。

第二步–安装和注册GitLab Runner

要真正了解什么是Runner,可以查看GitLab的有关它们的文档。 简而言之,它是计算机上的一项服务( 可以是某处的远程服务器,但由于您是iOS开发者,因此可以在Mac上使用,这使您与众不同 ),该服务可以运行特定的版本及其相应的测试过程在一个特殊的配置文件中进行设置。

在您的Mac上实际安装GitLab运行程序非常简单,因此我建议您遵循我们的GitLab朋友专门针对macOS提供的说明。

在某些步骤中,可能是令人困惑的是您的GitLab Runner的注册。 确实也有关于如何执行此操作的说明( 因此请遵循它们 ),但是我确实需要指出一些特殊之处:

  • 在执行注册过程时 ,请确保以用户模式完成 ,这意味着-无需使用sudo 在每个命令前面 实际上,请确保此处不使用sudo ,因为注册将无法进行。 相信我,我尝试了。
  • 在说明的第2步中,要求您输入GitLab实例URL 。 对我有用的是进入https://gitlab.com/ci
  • 在说明的步骤8中,要求您输入Runner执行程序。 输入shell
  • 您的跑步者应该已经启动并开始跑步。 您可以使用gitlab-runner verify命令gitlab-runner verify查看,或者在GitLab网站上转到项目页面时,选择Settings> CI / CD
  • 上面的屏幕快照中有两点需要注意: 第一是我为项目设置了两个特定运行程序 ,而我只使用其中一个, 第二禁用了共享运行程序。一世 确保我选择的特定运行程序运行我的项目。 共享跑步者不适用于iOS项目。

第三步-使用YAML文件配置构建和测试设置

对于那些使用过其他CI工具的人来说,以前可能已经看过或配置了YAML文件。 好吧,使用GitLab CI,配置非常相似-只是YAML文件需要命名为.gitlab-ci.yml

对于其他没有此类配置经验的人,请查看有关创建.gitlab-ci.yml文件的说明,您会发现它很容易。 只需确保将文件保存在Xcode项目文件夹中的正确位置即可。

我将为您提供两个为iOS项目创建的.gitlab-ci.yml文件的示例:

  • 第一个是安吉洛·斯塔夫罗(Angelo Stavrow)的。 向下滚动至安装和注册GitLab Runner 。 在下面,您将看到一个配置,其中包含不依赖项的Xcode项目的相应说明( 例如 Cocoapods )。 配置看起来像这样
 stages: 
- build

build_project:
stage: build
script:
- xcodebuild clean -project ProjectName.xcodeproj -scheme SchemeName | xcpretty
- xcodebuild test -project ProjectName.xcodeproj -scheme SchemeName -destination 'platform=iOS Simulator,name=iPhone 6s,OS=9.2' | xcpretty -s
tags:
- ios_9-2
- xcode_7-2
- osx_10-11
  • 第二个是与Cocoapods合作的项目的矿山设置。 我只有一个阶段,但是我正在为两个不同的环境构建,并且没有标签,因为我的跑步者可以在没有它们的情况下工作。 请注意xcodebuild脚本 命令后的命名差异。 我正在干净地构建和测试一个工作空间,而不是仅为一个名为addingTestsToProject的分支测试项目
 阶段: 
-建立

build_project_1:
阶段:建立
脚本:
-xcodebuild clean -workspace WorkSpaceName.xcworkspace -scheme SchemeName | xcpretty
-xcodebuild测试-workspace WorkSpaceName.xcworkspace-方案SchemeName -destination'platform = iOS Simulator,name = iPhone SE,OS = 10.3.1'| xcpretty -s
只要:
-addTestsToProject

build_project_2:
阶段:建立
脚本:
-xcodebuild clean -workspace WorkSpaceName.xcworkspace -scheme SchemeName | xcpretty
-xcodebuild测试-workspace WorkSpaceName.xcworkspace-方案SchemeName -destination'platform = iOS Simulator,name = iPhone 6,OS = 10.3.1'| xcpretty -s
只要:
-addTestsToProject

结论

这是完成的! 好吧,其中的大部分原因至少是因为,相信我,YAML文件可以非常复杂。 我为您提供的内容非常简单,希望对某些人来说这是一个良好的开端,对于其他人来说,这将是一个轻松的开始。

在下一篇文章中,我将分享如何设置GitLab CI和fastlane以便一起工作,以节省我在开发人员活动中的时间和精力。 在这里阅读。

在此之前,如果您发现不清楚的地方,请提出一个问题,并就我可以做的更好的事情分享建议。