Fastlane Swift for iOS的第一印象

原始文章:原始文章已发布在我的个人博客XCBlog上,继续阅读 此处 以获得更好的图形。 要阅读有关iOS DevOps和iOS CI / CD的更多有趣文章,请 在此处 访问我的博客

Fastlane刚刚从2.69.0版开始支持Swift,这意味着iOS开发人员不再需要编写Ruby代码来在iOS或macOS项目中配置Fastlane。 Fastlane是自动执行iOS部署,发行和各种常见的iOS开发任务(如代码签名,从Apple开发人员门户网站管理预配配置文件,证书和版本)的出色工具之一。 Fastlane提供了编程实现以自动化所有这些任务,因此我们可以在任何CI服务器上设置“持续集成”和“持续交付”。 但是,iOS开发人员必须学习和编写一些Ruby代码才能在项目中配置Fastlane,这是有效使用Fastlane的障碍之一。 传统上,iOS开发人员精通Objective-C或Swift,但不精通Bash,Ruby,Python等脚本语言。 幸运的是,Fastlane宣布了对Swift的支持,因此我们可以使用Apple的Swift编程语言为iOS应用配置CI / CD设置。 在这篇文章中,我将分享使用Swift版本的Fastlane的第一印象。

Fastlane Swift入门

Fastlane在此处添加了有关如何开始使用Fastlane Swift的简要文档,但是我们将看到它的实际效果。 首先要注意的是,即使Fastlane提供了Swift支持,它仍然打包为Rubygem,您仍然必须使用Rubygem使用以下命令安装Fastlane

  $宝石安装fastlane 

安装所有必需的依赖项可能需要几分钟。 如果您使用的是默认macOS随附的系统Ruby,则可能需要使用sudo。 安装后,我们必须确保您具有2.69.0以上的Fastlane版本才能与Swift一起使用。 我们可以使用fastlane -v命令进行检查。

现在,让我们在Xcode中创建一个单视图iOS项目FastlaneSwift-Demo。 为了检查Cocoapods的支持,让我们在Podfile中添加一些依赖项。 现在,我们将使用以下命令为该项目启动Fastlane。

  $ fastlane init迅速 

通过询问一些有关您的凭据,应用程序标识符,方案的问题,这将像往常一样设置我们的项目,您应该能够轻松完成设置。

一切完成后,您将看到位于以下位置的消息,提示打开Xcode项目

  $ ./fastlane/swift/FastlaneRunner/FastlaneRunner.xcodeproj 

这是一个附加的Xcode项目,以便在Xcode中配置Fastfile并具有所有自动完成功能和语法突出显示功能。 在这一点上,您可以使用Swift来配置通道。 但是,如果您想看看发生了什么,您可能会注意到Fastlane在fastlane目录中创建了8个目录和34个Swift文件。

使用Fastlane Swift

现在,让我们打开Xcode项目FastlaneRunner.xcodeproj,以了解其中的内容。 我们将看到这样的项目结构:

我们可以看到,所有配置(例如Fastfile)现在都是用Swift编写的。 现在我们可以使用Swift方法创建车道。 我们可以带车道直接使用所有可用的Fastlane动作。 现在,让我们配置单元测试和UI测试以与Fastlane一起运行。 如您所见,Fastfile已经创建了lane testLane()来运行我们可以直接使用执行的测试

  $ fastlane testlane 

这将运行为特定方案配置的所有可用测试。 您可能从Ruby版本中记得,Fastlane使用Scan来运行单元或UI测试。 让我们看看如何使用Swift版本配置Scanfile。 创建了两个文件作为模板ScanfileProtocol.swift,具有可以配置的所有选项,而Scanfile.swift具有可以在其中配置选项的模板代码。 让我们向Scanfile添加以下选项

 类Scanfile:ScanfileProtocol { 
  var工作区:字符串{返回“ FastlaneSwiftDemo”} 
var scheme:String {return“ FastlaneSwiftDemo”}
var codeCoverage:布尔? {返回true}
var addressSanitizer:布尔? {返回true}
var outputDirectory:字符串{return“ ./reports”}
var outputTypes:字符串{返回“ html,junit”}
var buildlogPath:字符串{return“〜/ Library / Logs / scan”}

}

现在,我们已经配置了Scanfile,并且可以使用配置的文件运行通道。

您可以在上面的gif中看到,在编写配置时,我们具有所有自动完成和语法突出显示的功能。 另外,请注意,我们可以使用配置的通道运行测试,但是每次都必须手动选择方案。

配置持续集成

如果您使用的是Github,我们可以在基于云的持续集成服务(例如TravisCI)上进行测试。 我们只需要创建一个文件.travis.yml并添加以下内容

 语言:Objective-C 
osx_image:xcode9
  before_install: 
-gem install fastlane --no-ri --no-rdoc --no-document
 安装:true 
脚本:
-快速通道测试通道

现在,我们可以在Travis上启用项目并开始在TravisCI上运行构建。

演示项目和TravisCI

我已经在Github FastlaneSwift-Demo和TravisCI上创建了演示项目,但由于某种原因,TravisCI尚未完成测试,因为它正在等待方案输入。

Fastlane Swift引擎盖下

我了解Fastlane Swift的实现方式如下

  • Fastlane Swift是Swift的包装器,可以在后台执行Ruby命令
  • 所有“扫描,匹配健身房”选项均使用各自的协议和扩展名创建
  • 所有Fastlane动作均存入运行Ruby命令的庞大Fastlane.swift文件中
  • Fastlane日志可以清楚地表明所有bunder和RubyGems仍在幕后执行。

Fastlane Swift的优缺点

Fastlane Swift刚刚诞生,所以说优缺点并不公平,但是将其视为Fastlane Swift的第一印象。

优点

  • iOS开发人员不再需要使用Ruby代码来配置iOS应用程序的CI / CD
  • Xcode项目为所有可用的Fastlane操作提供了自动补全和语法高亮显示。
  • 该代码完全在Swift中,因此可以轻松进行编译和部署。
  • 现在,每个iOS开发人员都可以轻松了解Fastlane。

缺点

现在写它的缺点还为时过早,但我的感觉是

  • Fastlane Swift只是一个包装器,它为iOS项目(包括Xcode项目)添加了不必要的38个swift文件。
  • Fastlane应该带有可使用Cocoapod,Carthage或Swift Package Manager安装的SDK。
  • 不遵守Scanfile配置的小问题,因为我必须手动输入方案。 或我做错了/误解了
  • 当我想要执行任何Fastlane操作时,该方法需要数百万个参数。 拥有单独的配置文件会很棒
  • 拥有额外的Xcode项目可能会混淆一些基于云的CI服务,例如BuddyBuild,Bitrise,因为它们在普通iOS应用程序上也可以构建该项目。
  • 现在还为时过早,并且它不是Fastlane的纯粹Swift实现,它只是在后台封装了Ruby命令。

结论

Fastlane通过增加对Swift的支持取得了很大的进步,并感谢贡献者,这可能会在将来改变游戏规则。 但是,我个人认为配置必须是配置,并且应该使用配置文件和脚本语言编写。 不幸的是,Swift不是脚本语言,而是每个人的个人选择。 在Fastlane Swift变得成熟之前,我将坚持使用Ruby版本。 你有什么意见? 我建议每个iOS开发人员都应该尝试一下。 如果我在这篇文章中不见了,请纠正我。

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