Fastlane为iOS带来持续部署
Fastlane是一组工具套件,旨在实现iOS应用发布流程的自动化,并且提供一个运行良好的持续部署流程,只需要运行一个简单的命令就可以触发这个流程。
Fastlane是一个ruby脚本集合,其中囊括了向苹果商店提交新应用或更新已有应用所需要的最常用任务。
- deliver用于上传应用的二进制代码,应用截屏和原数据到应用商店
- snapshot可以自动化iOS应用在每个设备上的本地化截屏过程
- frameit用于在应用截屏外添加设备框架
- PEM可以自动化地生成和更新应用推送通知描述文件
- sigh可以生成并下载开发者的应用商店配置文件
这个套件支持与Jenkins和CocoaPods,xctools等其他第三方工具的集成,并且能够定义多个通道(lanes)以支持不同的部署目标,如应用商店,Beta测试和测试。
fastlane典型的工作流程如下:
lane :appstore do
increment_build_number
cocoapods
xctool
snapshot
sigh
deliver
frameit
sh "./customScript.sh" slack
end
为了了解到更多关于这个项目的信息,InfoQ采访了Fastlane的发明者Felix Krause。
持续交付/部署能够给iOS应用部署流程带来的最大收益是什么?在苹果的审核流程框架之下,这个工具能够多大程度地发挥作用?
最主要的收益就是能够在每次发布一个更新或全新应用的时候可以为你节省大量的时间。这是iOS开发者必须亲自完成的工作。
在刚刚启动这个项目的时候,我并不确定是否能够将iOS应用发布流程的各个方面完全自动化,因为并没有公开的API来实现它。令人高兴的是,它的确能够正常运转,而且我已经为多家公司制定了完整的持续部署解决方案。
可否为我们简单描述一下使用fastlane的典型的工作流程?其中最相关的定制化选项有哪些?
我主要在如下场景下使用fastlane:
- 在每次提交时执行测试(这包括单元测试和集成测试)
- 只创建新的屏幕截图将其发送给客户
- 构建并分发Beta版本
- 构建并分发至应用商店(这包括更新配置文件,创建新的屏幕截图,上传应用至应用商店并提交应用)
在http://fastlane.tools网站上可以找到一些简单的例子。每个开发者都可以很方便地添加或删除单个构建步骤,甚至可以实现自己的构建步骤。
你认为什么类型的组织(例如独立开发者,小型开发组织,大型企业等)能够从fastlane的使用中受益最多?
独立开发者和处于初创阶段的小型开发组织:这类组织通常还没有运行任何自动化流程,很容易就可以开始使用fastlane。大型企业通常都已经有了某种类型的持续集成工具,他们需要适应fastlane的使用。
可否告诉我们一些关于fastlane当前采用率的情况?现在有什么成功案例么?
我不想自卖自夸,不过我可以分享一些数字:
- 全部fastlane工具大约有20000次安装
- 在第一次发布后的三天内有10000人次访问了http://fastlane.tools
- 所有 工具和fastlane曾经入选Github当月Ruby趋势库
我已经从一些知名的公司得到反馈称,他们已经成功地将fastlane工具集成到了他们的发布流程中。Panic是我得到反馈最大的公司之一。
驱动你创建fastlane的过程是怎样的呢?
我最初只为一个客户实现了fastlane,当时的fastlane与他们的系统结合十分紧密。当我跟其他的开发者谈论此事时,他们非常兴奋并且询问他们是否也可以使用这个工具。这就是为什么我以一种十分灵活并且文档齐全的方式开发这个工具以便将其共享给其他iOS开发者。
最初我只开发了deliver。之后我意识到还缺少一些工具,这就是为什么我又创建了另外四个工具(snapshot,frameit,PEM和sigh)。因为这些程序都是独立运行的,我又想到以某种方式将它们连接起来。也就在这时我有了fastlane的想法。
Fastlane是一个开源的工具集,可以从Github得到它的克隆。从官方指南中可以了解到关于安装、配置和使用这些工具的更多细节信息。
查看英文原文:Fastlane Brings Continuous Deployment to iOS
Fastlane为iOS带来持续部署的更多相关文章
- 使用 Fastlane 实现 IOS 持续集成
简介 持续集成是个“一次配置长期受益”的工作.但很多小公司都没有.以前在做Windows开发配置感觉简单一些,这次配置iOS的,感觉步骤还挺多.整理出来,分享给大家,不正确的地方请及时指正. 本文主要 ...
- 使用 fastlane 实现 iOS 持续集成(转)
http://www.cocoachina.com/ios/20150916/13433.html 简介 持续集成是个“一次配置长期受益”的工作.但很多小公司都没有.以前在做Windows开发配置感觉 ...
- CI Weekly #7 | Instgram/Quora 等大公司如何做持续部署?
终于,你们期待的 flow.ci iOS 项目持续集成 开始公测了.在这几个工作日, flow.ci 做了些许「功能优化」与「问题修复」,性能和体验都在持续优化中.比如: iOS 快速入门文档更新: ...
- CI Weekly #5 | 微服务架构下的持续部署与交付
CI Weekly 围绕『 软件工程效率提升』 进行一系列技术内容分享,包括国内外持续集成.持续交付,持续部署.自动化测试. DevOps 等实践教程.工具与资源,以及一些工程师文化相关的程序员 Ti ...
- CI Weekly #11 | 微服务场景下的自动化测试与持续部署
又一周过去了,最近我们的工程师正在搞一个"大事情" --「[flow.ci](http://flow.ci/?utm_source=bokeyuan&utm_medium= ...
- Docker环境的持续部署优化实践
最近两周优化了我们持续部署的程序,收效显著,记录下来分享给大家 背景介绍 那年公司快速成长,频繁上线新项目,每上线一个项目,就需要新申请一批机器,初始化,部署依赖的服务环境,一个脚本行天下 那年项目发 ...
- JAVA项目如何通过Docker实现Jenkins持续部署
原文地址:http://blog.51cto.com/dadonggg/1957691 本篇实操性的案例讲解——JAVA项目如何通过Docker实现持续部署(只需简单四步), 即:开发通过git pu ...
- 持续部署CI/CD
一.简介 在敏捷开发时,通常将服务进行拆分成不同模块,每个开发小组负责一个模块的开发,会在一天内对这个模块进行频繁的提交到仓库主干并部署到线上.CI/CD就是在开发中使用工具保证快速并稳定上线的方法, ...
- iOS应用动态部署方案
iOS的动态部署能极大的节约成本.苹果的审核周期很长,有的时候,你可能不得不等待将近2个星期去上架你的新功能或者bug.所以动态部署是有价值的. 我这里讨论的情况不把纯web应用考虑在内,因为用户体验 ...
随机推荐
- 【iOS】彩色TabBar切换动画实现
无意间看到一个彩色TabBar切换的设计图,感觉很不错,有空就把他实现了. 环境信息 Mac OS X 10.10.4 Xcode 6.4 iOS 8.4 效果图: 效果图 源码下载地址: https ...
- 【译】仿Taasky的3D翻转菜单动画实现
最终效果 最终效果 开始 首先下载并打开一个事先搭好架子的Demo,然后来分析一下.这个Demo包含一个主页和详情页,其中MenuViewController继承自UITableViewControl ...
- iOS7 edgesForExtendedLayout -- 解决冲突 / 系统偏移
今天在做UISearchBar,UISearchDisplayController时遇到了一个问题,在点击搜索栏时阴影部分的位置出现偏差 如下图: 始终觉得很奇怪,后面单独做了一个demo,将同样的代 ...
- linker command failed with exit code 1 (use -v to see invocation)解决办法
[cpp] view plaincopy Undefined symbols for architecture i386: "_OBJC_CLASS_$_FMDatabase&quo ...
- Android对话框
这周过的实在是艰辛,自打这周二起我的本本就开始闹"罢工",最后还是重装系统了事. . . 只是可怜了我的那些被格了的软件(悲伤辣么大)! 往事不要再提,人生几度风雨... 简 ...
- JS、ActiveXObject、Scripting.FileSystemObject
Javascript之文件操作 (IE) 一.功能实现核心:FileSystemObject 对象 要在javascript中实现文件操作功能,主要就是依靠FileSystemobject对 ...
- 9、数据库工程师要阅读的书籍 - IT软件人员书籍系列文章
数据库设计是软件项目底层的工作,它关系到软件项目的基础内容设计问题.数据库工程师的工作,就是设计数据库,维护数据库,优化数据库,这个跟DBA数据库助手的工作类似.现在的数据库有好几种了,比如MS SQ ...
- MongoDB-集群搭建
前言 搭建一个MongoDB的集群,这个环境只是内网的一个测试环境,分片没有使用副本集,配置并分配好端口后,开启集群的身份验证功能,在开启集群权限时,有些注意事项,在搭建过程中会着重标出. 一.集群规 ...
- Java内存泄露简述
Java的一个最显著的优势是内存管理.你只需要简单的创建对象而不需要负责释放空间,因为Java的垃圾回收器会负责内存的回收.然而,情况并不是这样简单,内存泄露还是经常会在Java应用程序中出现. 本篇 ...
- 字符输出流Writer简要概括
偷个懒,直接参考上篇字符输入流Reader的形式,其实Reader和Writer本来就大同小异: 字符输出流Writer 本篇将对JAVA I/O流中的字符输出流Writer做个简单的概括: 总得来说 ...