iOS与Fastlane和Jenkins的持续集成

Apiumhub的基本支柱之一是我们为客户提供始终提供最高质量水平工作软件的前提。 为了做到这一点,我们与持续集成合作,使我们能够为他们提供其应用程序的版本,这些版本已经过测试,使用并可以尽快传递到生产环境。 今天,我们将详细介绍如何与Fastlane和Jenkins进行iOS持续集成。

为了执行此任务,我们通过一系列Jenkins插件开发了一个DSL,DSL允许我们在通过集成测试,功能测试和QA测试后拥有最新的软件版本,并准备就绪并经过验证,可以在客户要求时分发它们它。 这使我们可以缩短开发周期,实现显着的价值交付,并获得最终用户对添加到客户端应用程序中的任何新功能的快速反馈。

凭借多年与多个客户合作的经验以及丰富的知识积累,我们决定是时候将新平台整合到我们的持续集成系统中了。 在这种情况下,我们将讨论如何使用Fastlane工具和Jenkins持续集成系统将iOS平台添加到系统中。

iOS与Fastlane的持续集成

Fastlane是用于管理Android和iOS持续集成周期(打包和部署)的工具。 它是由Felix Krause创建的,基于红宝石。
创建这种风格的工具的需求源于漫长,反复和复杂的打包移动设备应用程序的过程,首先是在iOS中,然后是对Android的支持。

Fastlane的基本基础是它允许我们创建一种称为“ Lanes”的“脚本”,在其中执行一系列称为“ Actions”的预编程“命令”。 该工具默认情况下有一系列操作,使我们可以管理移动应用程序生命周期的不同方面。 如前所述,这些操作可以分为多个通道,这些通道使我们可以根据需要覆盖应用程序生命周期的需求创建自定义脚本。

车道示例:

lane :beta do 
increment_build_number
gym # Build your app
testflight # Upload to TestFlight
end

该通道称为beta,它的作用是:增加内部版本数,进行应用程序的打包(生成iPA),然后将其发送到Testflight。
因为所有文档都很好地收集在其网站上,并且互联网上有很多示例,所以我们将不再谈论它并解释Fastlane的工作原理。

为了能够安装Fastlane,我们必须考虑以下几点:

1.拥有适当版本的ruby,为此,我们将执行命令

ruby -v在终端中

控制ruby版本非常重要,因为默认情况下OSX与版本2.0一起使用,这会给Fastlane带来很多问题,因此我们建议安装ruby rvm的版本管理系统。 如果您在使用ruby版本时遇到问题,可以转到类似的教程,或在Google上进行快速搜索(“ update osx ruby​​ version”)。

2.安装xcode工具

xcode-select –安装

Fastlane可以通过以下方式安装:

  • 家庭酿造(酿造酒桶安装fastlane)
  • Ruby,就像一个宝石(sudo gem install -n / usr / local / bin fastlane –详细)

在计算机上安装Fastlane之后,我们必须转到要在其中添加Fastlane的项目文件夹并执行以下命令:

FastLane初始化

什么将创建所有依赖项并配置项目以支持Fastlane。 完成该过程后,您的项目应包含一个名为fastlane的文件夹,并且其中应包含2个重要文件:

  • Appfile:包含项目和设备的标识符,Apple ID用于管理凭据和与iTunes的连接。
  • Fastfile:这是定义车道的地方。 默认情况下,它通常会带来最常见的测试版和发布版。 在此文件中,将配置生命周期的所有过程和应用程序的部署,并在其中完成所有管理。

在Apiumhub中,我们配置了2条通道,我们称其为build。 它的作用是使用动作扫描通过测试,然后使用动作健身房对应用程序进行打包。 另一个我们称为发布。 它所做的是将应用程序发送到Apple Store进行发布。

车道建立:

 lane :build do 
scan(scheme: "Plannear")
gym(scheme: 'Plannear', export_method: 'app-store')
end
 Lane release 
lane :release do
deliver(force: true)
end

如果客户希望在将其应用程序发送给Apple之前在内部对其应用程序进行测试,我们可以使用另一条称为preprod的通道将应用程序发送到testflight并自动将其分发给所有添加为测试人员的用户。

iOS与Jenkins的持续集成:配置

设置好Fastlane工具并测试了项目中可行的工具后,我们要做的是配置Jenkins以自动执行工具的任务(在本示例中,我们要做的是将用户的本地计算机配置为测试计算机) ,但是对于安装了OSX并正确配置Fastlane的任何计算机,都可以用相同的方式进行。

远程节点将通过Web启动执行。 因此,在执行远程节点的机器上,我们必须安装java和Web启动工具。 在远程根目录部分中是包含Fastlane的iOS项目的安装文件夹。

下一步是定义具有以下配置的管道(必须安装插件构建管道):

在这种情况下,我们必须完成的部分是初始作业,这是我们将告诉Jenkins我们希望它在管道中执行哪些作业的部分。
最后,我们进入Jenkins配置的最重要部分,在此定义每次管道任务启动时将在远程计算机上执行的作业。
对于詹金斯来说,这项工作的配置是相当标准的,它将定义为首先下载github项目,然后执行适当的Fastlane通道。 配置将类似于以下内容:

在这种情况下,最重要的部分是最终的shell脚本。 该脚本的特殊性是必须正确配置ruby环境变量,以便Fastlane的远程执行正常工作。

一旦定义了管道→任务→作业的集合,我们就已经使整个过程自动化,并且只需通过Jenkins中的计划配置执行,我们就可以自动执行应用程序生命周期的任何过程。

在我们的案例中,我们通常定义一个用于构建的管道和一个用于发布的管道,我们可以非常快速地遵循Jenkins中的过程,如下所示:

如果客户要求,这也有帮助,我们可以在他或她的设施中配置一台机器来执行整个过程,因为在我们的案例中,所有的jenkins配置都保存在可以版本化的groovy文件中,从而可以在其中快速部署。具有相同特征的任何连续集成环境。

如果您对ios持续集成或移动开发感兴趣,我强烈建议您单击此处以订阅我们的每月时事通讯。

如果您发现有关iOS持续集成的这篇文章很有趣,那么您可能会喜欢…

iOS中的MVP模式

iOS Objective-C应用程序:成功的案例研究

年度移动应用开发趋势

Banco Falabella可穿戴案例研究

移动开发项目

Viper架构对iOS应用程序的优势