在iOS项目上使用Travis-CI和Fastlane设置CI

持续集成(CI)是一种很棒的软件工程实践。 它要求开发人员在每次提交之后频繁提交。 这样,可以自动运行测试,计算覆盖率,执行静态代码分析等,以确保每次提交都不会破坏构建过程并且不会带来副作用。 如果提交破坏了构建,则进行更改的人员将收到一封电子邮件,需要检查并修复构建。 通常,在构建结束时,会创建一个测试版本。

通常,这就是过程,但是各个公司的过程可能有所不同。 这种工作流程的好处来自频繁的集成-您很快就会发现问题所在,并有机会快速进行修复。 团队越大,拥有这样的自动化集成过程就越重要,因为在每次提交之后,都有可能破坏代码库。

在本文中,我们将使用Travis CI和Fastlane为一个开源iOS项目设置CI。 目标是在GitHub存储库上的每次提交上运行CI,并在自述文件部分中显示有关构建状态和覆盖率的信息。

实作

特拉维斯CI

首先,您需要在GitHub上拥有一个带有单元测试的开源iOS项目。 在这篇文章中,我将与即将发布的iOS框架GirdersSwift合作。

第一步是通过单击“使用GitHub登录”按钮将GitHub帐户连接到Travis CI。 系统将要求您提供对Travis CI的某些权限,以使他们能够访问您的开源存储库。

Travis CI对于开源项目是免费的,但是对于商业项目也有一些付费计划。

成功注册Travis CI后,您应该在仪表板中看到所有项目。 找到您要为其添加配置项的配置项,然后启用绿色开关。

这就是我们目前在Travis CI上需要做的所有事情。 有了这个小的更改,我们已经告诉Travis CI,它应该为GirdersSwift回购运行连续构建,但是我们仍然没有告诉它该怎么做。 Travis CI不知道它是iOS,Android,Java还是其他类型的项目。 它还不知道是否应该运行测试,计算覆盖率等等。

我们通过在GitHub项目的根目录下创建.travis.yml文件来提供此信息。 让我们看看这个文件应该包含什么。

osx_image:xcode9.3

语言:迅捷

脚本:

– fastlane ios覆盖率

如您所见,我们告诉Travis CI,它应该使用Xcode 9.3运行构建,并且语言是Swift。 在脚本部分,我们提供了每次构建后都需要执行的步骤。 在这里,我们使用Fastlane进行测试和覆盖。

快车道

Fastlane是一个出色的工具,可以自动完成与iOS开发相关的所有繁琐工作,从测试,构建,创建发行版到部署到商店。 它基于在Fastfile中定义的通道的概念。 您可以在一个泳道中定义几个动作,并且已经开发了动作,这些动作是我们iOS工程师最需要的。

通过在项目的根目录中键入fastlane init ,为项目启用fastlane。 您也可以输入您的开发者帐户信息,但这不是必需的。 这将创建一个Fastlane目录,其中包含Fastfile。 现在,让我们定义我们的覆盖范围,它将用于执行连续构建。

default_platform:ios

平台:ios先做co_coapods

结束

desc“运行所有测试”

车道:测试

scan(scheme:“ GirdersSwift”,code_coverage:true)

结束

desc“运行覆盖”

车道:coverage do

测试

slather(travis:true,scheme:“ GirdersSwift”,

工作服:是的,

项目:“ GirdersSwift.xcodeproj”,

工作区:“ GirdersSwift.xcworkspace”

结束

结束

首先,我们定义before_all操作,该操作始终为项目安装CocoaPod依赖项。 如果您不使用CocoaPods,则可以删除此步骤。 接下来,我们定义测试通道,该通道基本上称为扫描操作,该操作将运行测试。 由于我们将显示代码覆盖率数据,因此需要为此操作启用code_coverage

现在,我们可以创建覆盖范围 。 首先,我们运行测试操作,然后调用slather,生成覆盖报告。 Slather可与travis配合使用-您甚至可以在将要使用travis的操作中进行配置。 除此之外,还有有关方案和项目的信息,以及我们设置为true的工作服标志。 但是,工作服是什么?

工作服

Coveralls是一项与所有主要CI产品集成的服务,专门用于显示代码覆盖率数据。 与Travis CI相似,开源项目免费。 首先,请访问其网站并使用Gi​​tHub登录。 它将询问您与Travis CI相同的权限。 完成之后,您可以在其仪表板中看到所有GitHub项目。 同样,为项目启用覆盖率信息只需单击一个开关即可。

这就是我们需要做的所有设置。 如您所见,这非常简单。

运行CI

如果一切设置正确,则将.travis.yml文件提交到GitHub存储库后,Travis CI将运行您的构建。 在Travis CI仪表板中选择项目,您将看到有关当前版本的信息(下面有一个日志),以及有关先前版本的信息。

构建完成后,转到Coveralls仪表板,查看那里是否还有覆盖率信息。 您可以浏览源文件,查看未对代码的哪些部分进行足够的测试。 如您所见,这里有一些非常有用的信息。

在GitHub上添加

现在,让我们向世界展示我们已经通过了持续构建并且代码覆盖率为75%。 这应该在我们的GitHub存储库上很容易看到,因此人们知道我们关心软件工程的最佳实践。 为此,请访问shields.io,并获取您的徽章。

选择徽章后,您应该输入指向GitHub帐户的链接并回购并将Markdown复制到GitHub上的自述页面。

如果所有设置均正确,则应该看到通过的构建和代码覆盖的标志,这些标记将在每次运行构建时更新。

结论

如您所见,为您的项目设置CI的过程非常简单,但是好处却是巨大的。 您总是有机会尽快对代码库中的潜在问题做出反应。

值得一提的是,还有其他CI解决方案,例如Jenkins。 您可以在基础架构上设置Jenkins实例并在内部运行所有内容。 这需要更多的工作和维护成本,而且您必须保留所有代码并将其访问给组织。

您在项目中使用CI吗? 您觉得有用吗? 如果是,您正在使用哪些产品? 在评论部分分享您的想法。