iOS+Fastlane自动打包、发布测试、消息通知,完美结合!

iOS打包烦不烦?偶尔一次还好,但是一天三五次测试打包肯定让人烦,不信你试试!

曾经我以为自动化打包很没必要,所以一直都是Xcode中规中矩的打包操作然后发布;而如今我正在经历着一天之中反复的测试、回归,有时一天打包发布个三五次,不断的来回告诉测试妹子打包发布了去下载吧,有时妹子也烦。

同时不断的重复性的build、 archive、导出、发布测试平台实属枯燥。再加上电脑卡、反应慢,打个包一二十分钟过去了也耽误不少时间,所以自动化打包迫在眉睫。

所以我们要实现一行命令自动打包、发布、然后自动发消息通知测试。

最后我们选择了Fastlane 、 蒲公英发布测试;

现在我们只需要一行命令搞定让枯燥的打包自动进行,自动发布,自动发消息通知测试,而且整过流程用时几分钟就能搞定,比以前大大的少了很多,真是大大的提高工作效率;

我们操作路线: Fastlane自动打包 -> 蒲公英发布测试 ->钉钉

  • Fastlane 实现自动打包,自动发布到蒲公英平台

  • 蒲公英:App发布平台;

  • 钉钉,建立的开发测试群,每次自动打包发版后,系统机器人就会自动提示如下:

是不是很方便?群里的每个人都知道了,再也不用我们去通知了!

接下来就按步骤去实现它吧。。。

Fastlane安装与配置

Fastlane基于ruby环境自动化工具集,它不是一个工具,它是一系列的工具的集合,基本上涵盖了打包,签名,测试,部署,发布,库管理等等移动开发中涉及到的内容。 同时该套件也支持与 Jenkins 、CocoaPods、xctools 等其他第三方工具的集成。

  • 1、安装 Xcode command line tools:

xcode-select --install

安装过会提示已经安装;

xcode-select: error: command line tools are already installed, use "Software Update" to install updates
  • 2、安装Fastlane

sudo gem install fastlane

Successfully installed fastlane-2.193.1
Parsing documentation for fastlane-2.193.1
Done installing documentation for fastlane after 5 seconds
1 gem installed
  • 3、fastlane 初始化

fastlane init

cd 打开工程所在目录,执行fastlane init出现如下提示:

[13:21:46]: What would you like to use fastlane for?
1.   Automate screenshots
2. ✈️  Automate beta distribution to TestFlight
3.   Automate App Store distribution
4.   Manual setup - manually setup your project to automate your tasks

选择4 ,手动设置工程文件;然后一路enter

fastlane init.png

然后可看到工程目录下多了几个文件:

appfile.png

其中Appfile、Fastfile就是我们需要修改的文件;

  • Appfile:App相关的信息,写以下三项就可以:
app_identifier "com.XX.XX"
apple_id "appid"
team_id "teamid"
  • Fastfile:描述打包相关的配置信息,初始内容如下:
default_platform(:iOS)
platform :iOS do
  desc "Description of what the lane does"
  lane :custom_lane do
    # add actions here: https://docs.fastlane.tools/actions
  end
end

一个lane可理解为就是一个任务,我们打包发布到蒲公英是一个任务,打包发布到App Store也是一个任务;
lane中可添加多个action,也就是具体的操作,比如打包方法操作是一个action,发布蒲公英操作也是一个action;

Fastlane本身自有的一些lane,可以在不同的 阶段做一些额外的操作:

before_all,就是在执行一次脚本之前首先执行的代码,我们可以在这里面执行一些公共的东西,比如git_pull,cocoapods。

after_all, 成功结束之后,处理共有的后置逻辑。

before_each,每次执行 lane 之前都会执行一次。

after_each,每次执行 lane 之后都会执行一次。

error,在执行上述情况任意环境报错都会中止并执行一次。

我要发布到蒲公英,所以完整的配置如下:
default_platform(:iOS)
platform :iOS do
  lane :hs_test do
    # add actions here: https://docs.fastlane.tools/actions
    gym(
          clean: true,
          output_directory: './fastlane/build',
          output_name:"XX.ipa",
          scheme: 'XXX',
          configuration: 'Debug',###########
          # sdk:"iOS 12.0",
          # archive_path:"./fastlane/Archive",
          include_symbols:true,
          export_options: {
            method: 'development',#测试包
            provisioningProfiles: {
                "com.xxxx.xxx" => "20210906_dev" #测试打包描述文件
            },
          }
    )
    
    updateVersionDes = "提到蒲公英的版本更新信息;"
    pgyer(
        api_key: "蒲公英API Key", 
        user_key: "蒲公英user_key"
        update_description: updateVersionDes
    )
    end
end

然后再终端中输入

fastlane hs_test (可理解为就是我们的任务名)

然后剩下的就不用我们管了,它会自动的帮我们处理余下的所有工作;

参数解释:

  • gym:fastlane 封装的打包方法、会自动处理打包、签名等操作;
    配置项
    clean:每次执行前是否清空工程;
    output_directory:输出文件目录
    output_name:App名字’
    scheme:App scheme
    configuration:The configuration to use when building the app. Defaults to 'Release'
    export_options:导出时配置项,及发布证书相关;

我用到的不多,其他参数还很多具体参看官方文档吧。

至此关于Fastlane 配置完成了,现在就可以愉快的打包了,然后在工作目录中看到生成的IPA包。

蒲公英设置

蒲公英支持Webhook机制,可以将事件消息通知分发出去;所以当我们发布新版本时可以给钉钉或微信发送消息,通知App版本更新;

打开指定的应用,选择【内测分发】-【Webhook设置】创建新的Webhook

钉钉设置

打开钉钉群【设置】-【智能群助手】-创建机器人

复制Webhook URL https://oapi.dingtalk.com/robot/send?access_token=000351XXXXXXXXXX,到蒲公英Webhook URL ;

至此所有配置算是完成了,现在我们就可以实现一行命令打包,然后去逍遥自在了_

APP自动化方面操作功能很强大,能做的还有很多,今天只是初步实现测试环境自动化打包,更高级的用法还有待继续摸索。

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

推荐阅读更多精彩内容