使用 Fir.cli 工具实现快速打包 一 (iOS版本)

       最近一直在做远程开发,需求也比较频繁,所以动不动就编译打包提测上传做了很多重复工作,基本每次都得花十分钟左右时间,而且其中每个过程都必须仔细关注,以免出现差错,很是费事.

       在极其注重效率的今天,且所有编译器或IDE都希望程序员把注意力集中到业务需求上的大环境下,传统打包方式显然已经跟不上节奏.  所以持续集成和快速打包等方式已然成为主流,今天就详细介绍下长期专注于应用内测服务的 fir - (官网链接 https://fir.im/) 提供的快速打包上传一条龙工具 fir.cli .

       先说说使用快速打包之前我们的日常提测步骤是什么

1. Xcode ->Product-Scheme->Edit Scheme 下选取Debug打包方式

日常提测选debug模式

2.选择Archive 将源码转换为 .xcarchive 包

点击之前要注意选择的Archive模式


3.配置好证书,及描述文件后,选择打包ipa方式

提测选择DevelopMent

4.将桌面生成的包传到fir,并生成短链,填写changeLog

上传ipa至fir服务器


5.上传完成后将短链地址告知测试人员

打开QQ/讨论组/微信 等,打开相关人员对话框 编辑更新内容 粘贴下载URL,发送.....

当然以上部分步骤也可用Xcode自带的打包命令执行,但上传下载的步骤总是省不了,实际上fir.cli也是使用Xcode命令来实现打包的

使用fir.cli之后

以上所有繁琐的过程在使用fir.cli后可以简化成一条命令,极大的缩短的打包时间且降低了出错率

$ fir bi -w -t doctor -C Debug -S doctor -p -c“2.5.3需求提测” 

以上是针对我目前项目的写法,意思为:直接在项目根目录下输出 cocoapods项目里(-w) doctor target下(-t doctor) 以debug方式打包(-C Debug) 设置Scheme 名字为 doctor (-S doctor) 打包完成后自动上传至对应Bundle id 的应用动态下,且使用原有下载短链(-p) 更新内容为 "2.5.3需求提测" (-c“2.5.3需求提测”).

如果需要通知相关人员的话可以加上

$ curl https://hooks.pubu.im/services/test_test_test -X POST --data-urlencode  'payload={"text":"iOS版本已更新","attachments":[{"title":"会医","description":"2.5.3需求完善","url":"http://fir.im/doctest","color":"success"}],"username":"杨永强","icon_url":"https://oivkbuqoc.qnssl.com/91305b85ec630717a36fe6b839aac79764667d23?t=1493359982.968105","buttons":[{"text":"点击下载","url":"http://fir.im/doctest"}]}'

其中 https://hooks.pubu.im/services/test_test_test 为配置了团队协作工具 瀑布 IM 之后的post链接,作用就是使用命令快速发送自定义聊天消息,其主要业务也是将碎片化的开发时信息做统一收集,本篇暂不介绍其具体使用方法, 其具体业务内容可参考,其具体业务可参考 瀑布 IM

使用场景

这通知命令看起来也很繁琐,且changeLog还得写两次,其余别的参数也看起来没什么关键信息,其实fir早就帮我们想好了,在fir官网的应用配置下面直接配置瀑布IM的hook链接后可以很方便的自动帮我们做了通知人员的事情

零信 == 瀑布IM


其使用场景为下图,在执行完 ($ fir bi -w -t doctor -C Debug -S doctor -p -c“2.5.3需求提测”) 命令后,fir会自动发相关消息到瀑布IM

app有更新后自动发布消息通知相关人员

这样一来我们连通知相关人员的沟通成本都省掉了,以后就差直接往测试手机里自动装应用啦😝

其安装方式非常简单 只需要

$ gem install fir-cli

更新fir.cli 为

$ fir upgrade

其必要安装条件及运行条件为:

1.已安装Xcode及Xcode Command -line-tool 工具

2.更换Ruby源为淘宝源,(如果未翻墙)

3.确保Ruby 的 gem为最新版本

4:确保正确配置相关开发证书及描述文件

使用前先将fir.cli与你的账号简历绑定

$ fir login

这时需要输入fir账号的token来建立对应关系


点击生成fir token

复制token到终端即可建立绑定关系

继续执行

($ fir bi -w -t doctor -C Debug -S doctor -p -c“2.5.3需求提测”)具体项目可按帮助内容执行具体命令

在执行完打包命令后会在项目根目录下生成fir_build目录,其结构为:

是不是很方便,甚至帮我们生成了对应的符号表文件,另外fir.cli还可集成 BugHD,如果想使用那么可直接使用命令配置实现,自动上传符号表文件,简直不要太方便.

fir mapping指令用于将符号表上传至BugHD.com所对应的项目, 目前已经支持 dSYM 和 txt 两种格式的符号表文件上传, 有以下三种方法上传:

指定 version 和 build 上传:

$ fir m-P-v-b-T

在 publish 的时候自动上传:

$ fir p-m-P-T

在 build_ipa 的时候自动上传:

$ fir b-P-M -p -T

详细的使用说明, 可以使用fir mapping -h查看

在fir_build目录的exportOptions.plist 内容为

均为默认参数,可修改后使用配置方便命令打包

fir.cli 还可以直接编译 Github 上的 workspace

$ fir build_ipa git@github.com:xxxx.git -o path/to/output -w -C Release -t allTargets GCC_PREPROCESSOR_DEFINITIONS="FOO=bar"

当然fir.cli能做的远不止这些,具体-help 为

Usage:

fir build_ipa BUILD_DIR [options] [settings]

Options:

-B, [--branch=BRANCH]# Set branch if project is a git repo, the default is `master`

-w, [--workspace], [--no-workspace]# true/false if build workspace

-S, [--scheme=SCHEME]# Set the scheme NAME if build workspace

-C, [--configuration=CONFIGURATION]# Use the build configuration NAME for building each target

-d, [--destination=DESTINATION]# Set the destination specifier

-t, [--target=TARGET]# Build the target specified by target name

-E, [--export-method=EXPORT_METHOD]# for exportOptionsPlist method, ad-hoc as default

-O, [--optionPlistPath=OPTIONPLISTPATH]# User defined exportOptionsPlist path

-f, [--profile=PROFILE]# Set the export provisioning profile

-o, [--output=OUTPUT]# IPA output path, the default is: BUILD_DIR/fir_build_ipa

-p, [--publish], [--no-publish]# true/false if publish to fir.im

-s, [--short=SHORT]# Set custom short link if publish to fir.im

-n, [--name=NAME]# Set custom ipa name when built

-c, [--changelog=CHANGELOG]# Set changelog if publish to fir.im

-Q, [--qrcode], [--no-qrcode]# Generate qrcode

-M, [--mapping], [--no-mapping]# true/false if upload app mapping file to BugHD.com

-P, [--proj=PROJ]# Project id in BugHD.com if upload app mapping file

[--open], [--no-open]# true/false if open for everyone

[--password=PASSWORD]# Set password for app

-T, [--token=TOKEN]# User's API Token at fir.im

-L, [--logfile=LOGFILE]# Path to writable logfile

-V, [--verbose], [--no-verbose]# Show verbose

# Default: true

-q, [--quiet], [--no-quiet]# Silence commands

-h, [--help], [--no-help]# Show this help message and quit

多种命令组合基本可适用绝大部分使用场景,还未使用的快赶紧试试吧,而且内容中提到的瀑布IM 功能也非常强大,囊括了绝大部分为提升开发效率而生的工具,其强强联合必然会让你的团队开发如虎添翼,试想下团队中的任何人的任何一次提交整个项目任何一小个动作都能在一个IM应用里收到通知并提供相关功能作分类查找处理,那沟通成本必然会大大降低.


近百项支持应用

本人第一篇博文,不足之处还望大家能及时指出,相关的问题也可私聊我,一直致力于团队开发效率提升,大家有什么效率提升的好工具可以留言给我哈,感谢先

下一篇继续介绍使用该工具自动打包安卓项目的步骤

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270

推荐阅读更多精彩内容