Fastlane 使用心得

2023-11-23 18:50
文章标签 使用 心得 fastlane

本文主要是介绍Fastlane 使用心得,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 为什么选择fastlane
在程序的世界里,一切重复性的,流程化的工作都可以交给自动化/工具去完成。
在移动开发中也是如此,编写代码只是软件开发中的一部分,除此之外还需要我们编译、打包、上传、发布、部署、库管理、版本控制等coding 之外的事,而正是这些重复而又繁杂的工作,耗费了我们大量的时间。
所以面对这样的工作,总会有人想要做出改变,于是就会出现许多好用的工具,既方便了自己,又帮助了其他人。

2. 关于fastlane
今天就要给大家介绍一个工具: fastlane, 这个在GitHub上面属于明星项目,目前共有1万多个star,并且有1500多个fork,这个在开源方面算比较厉害的了。
先简单介绍一下,fastlane使用ruby语言编写的一套自动化工具集和框架,每一个工具实际都对应一个ruby脚本,用来执行某一个特定的任务,而fastlane核心框架则允许使用者通过配置文件的形式,将不同的工具有机而灵活的结合在一起,从而形成一个完整的自动化流程
到目前为止,fastlane 的工具集大约包含了170多个小工具,基本涵盖了打包,签名,测试,部署,发布,库管理等移动开发中所涉及到的内容。关于这些工具详细的介绍和使用,可以在fastlane 文档中去查阅。
如果这些工具仍然没有符合你的要求,没有关系,得益于fastlane,本身强大的action和plug机制,如果你恰好懂一些ruby开发的话,可以轻易的编写出自己想要的工具。
其实fastlane 的安装非常简单,和cocoapod 一样,fastlane 也可以通过rubygems来安装,如果你的电脑上有ruby环境的话,只需要一句话就可以完成,gem install fastlane

3. 移动端持续集成和持续交付的场景和痛点
fastlane 本身能做的事情很多,但是其中一个最为重要的作用就是能够无缝的嵌入在持续测试和交付的体系中。
下面可以为大家例举一个场景
当一个迭代开发测试结束,服务器端上线之后,我们会使用Testflight进行线上跟测,一般会执行以下流程:
1. 执行git pull,拉取最新代码到本地
2. pod install 安装最新的依赖库
3. 在Xcode中将build version增加
4. 在Xcode中点击archive编译并打包
5. 选择输出一个iOS App Store模式的IPA文件
6. 通过application loader将IPA上传至ITC(Itunes connect)
7. 然后等待ITC Process 完成之后,登录ITC选择刚上传的IPA文件进行Testflight测试
8. 由于修改了版本号,所以需要将代码commit和push 一下
如果线上跟测发现有问题,那么需要修复完毕和重复上面8个步骤。
其实做过这件事的同学应该都有体会,顺利的话差不多一次得20到30分钟,如果某一次build version 忘记增加了,那么前面的工作都白做了。

4. fastlane 在项目中的应用
上面介绍了fastlane 在持续集成和交互上的一些优势,那么我们在来看看移动端目前的发展趋势。
最近几年,随着智能手机的普及,移动端不仅要承载更多业务场景的实现,并且还要应对不断变化的也无需求,敏捷开发也是如此,这就要求我们团队能够迅速响应变化,快速迭代,那么随之而来的问题就是,如何保障在不牺牲质量的前提下,尽可能的提升我们的速度,我觉得这一切需要建立在高质量的持续测试和持续交付体系之上,

所以我们团队从前一段时间开始,一直在尝试着寻找这样的一种工具,可以快速的帮助我们持续集成与交互。
刚开始我们在尝试使用Jenkins+pgyer搭建了一套持续测试的环境,大致的流程如下图:

说实话,效果还是可以的,至少在一定时期内满足了我们的要求,但是Jenkins本身只是一个通用的CI流程管理系统,本身并不提供诸如ITC提包和Meta内容管理,签名,证书管理等等和移动端业务紧密结合的场景,而且配置的过程相当繁琐。

前段时间闲暇之余,我们在许多博客上面发现了Fastlane,看了Readme后感觉有戏,于是决定尝试一下。其实刚开始的时候,我们也只是用Fastlane来解决iOS团队内证书同步和上传ITC的问题,但是随着深入的研究,发现其实Fastlane能做的更多,比如:私有Pod的发布,代码的静态检查,UIAutomation测试等等。

另外,Fastlane本身也可以和Jenkins,Circle等主流CI系统做很好的集成,并且由于主要的CI流程都由Fastlane来管理和执行,所以从根本上降低了这些系统配置的复杂度。
随着我们在项目中更深入的运用Fastlane, 持续集成、测试、交付离我们不远了。


参考文档:

http://www.infoq.com/cn/articles/actual-combat-of-fastlane-part01

这篇关于Fastlane 使用心得的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/420003

相关文章

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

Pandas使用AdaBoost进行分类的实现

《Pandas使用AdaBoost进行分类的实现》Pandas和AdaBoost分类算法,可以高效地进行数据预处理和分类任务,本文主要介绍了Pandas使用AdaBoost进行分类的实现,具有一定的参... 目录什么是 AdaBoost?使用 AdaBoost 的步骤安装必要的库步骤一:数据准备步骤二:模型

使用Pandas进行均值填充的实现

《使用Pandas进行均值填充的实现》缺失数据(NaN值)是一个常见的问题,我们可以通过多种方法来处理缺失数据,其中一种常用的方法是均值填充,本文主要介绍了使用Pandas进行均值填充的实现,感兴趣的... 目录什么是均值填充?为什么选择均值填充?均值填充的步骤实际代码示例总结在数据分析和处理过程中,缺失数

如何使用 Python 读取 Excel 数据

《如何使用Python读取Excel数据》:本文主要介绍使用Python读取Excel数据的详细教程,通过pandas和openpyxl,你可以轻松读取Excel文件,并进行各种数据处理操... 目录使用 python 读取 Excel 数据的详细教程1. 安装必要的依赖2. 读取 Excel 文件3. 读

解决Maven项目idea找不到本地仓库jar包问题以及使用mvn install:install-file

《解决Maven项目idea找不到本地仓库jar包问题以及使用mvninstall:install-file》:本文主要介绍解决Maven项目idea找不到本地仓库jar包问题以及使用mvnin... 目录Maven项目idea找不到本地仓库jar包以及使用mvn install:install-file基

Python使用getopt处理命令行参数示例解析(最佳实践)

《Python使用getopt处理命令行参数示例解析(最佳实践)》getopt模块是Python标准库中一个简单但强大的命令行参数处理工具,它特别适合那些需要快速实现基本命令行参数解析的场景,或者需要... 目录为什么需要处理命令行参数?getopt模块基础实际应用示例与其他参数处理方式的比较常见问http

C 语言中enum枚举的定义和使用小结

《C语言中enum枚举的定义和使用小结》在C语言里,enum(枚举)是一种用户自定义的数据类型,它能够让你创建一组具名的整数常量,下面我会从定义、使用、特性等方面详细介绍enum,感兴趣的朋友一起看... 目录1、引言2、基本定义3、定义枚举变量4、自定义枚举常量的值5、枚举与switch语句结合使用6、枚

使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)

《使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)》PPT是一种高效的信息展示工具,广泛应用于教育、商务和设计等多个领域,PPT文档中常常包含丰富的图片内容,这些图片不仅提升了... 目录一、引言二、环境与工具三、python 提取PPT背景图片3.1 提取幻灯片背景图片3.2 提取

使用Python实现图像LBP特征提取的操作方法

《使用Python实现图像LBP特征提取的操作方法》LBP特征叫做局部二值模式,常用于纹理特征提取,并在纹理分类中具有较强的区分能力,本文给大家介绍了如何使用Python实现图像LBP特征提取的操作方... 目录一、LBP特征介绍二、LBP特征描述三、一些改进版本的LBP1.圆形LBP算子2.旋转不变的LB

Maven的使用和配置国内源的保姆级教程

《Maven的使用和配置国内源的保姆级教程》Maven是⼀个项目管理工具,基于POM(ProjectObjectModel,项目对象模型)的概念,Maven可以通过一小段描述信息来管理项目的构建,报告... 目录1. 什么是Maven?2.创建⼀个Maven项目3.Maven 核心功能4.使用Maven H