iOS Fastlane自动化打包(1) 安装和打包IPA
iOS Fastlane自动化打包(2) 自动上传IPA到蒲公英
前文介绍了如何用Fastlane
打包以及上传蒲公英,大大简化了提交企业包的步骤,但是作为一个强迫症,还觉得不完美。做到这个程度,还是需要守在打包机面前,等待打包结果。最理想化的场景就是,打包成功或者失败都推送到手机上,不需要人工去查看打包结果。
效果如下:
image.png
其实从图上也可以看出来,我最终使用的是IFTTT完成推送。
什么是 IFTTT?
简单说 IFTTT 是一个服务(也就是我们说的「智能管家」),对于这个服务,我们只需要设置规则,告诉它「如果 A 完成了事情 1,那么就让 B 完成事情 2」,它就会忠实地检查这些规则,并帮我们执行对应的任务。
在 IFTTT 中,我们可以通过 If This Then That 的句式,分别设置 This(条件)和 That(动作),IFTTT 会像忠实的管家一样,自动检查条件是否达成,一旦条件被触发,它就会自动执行条件对应的动作,有了这个智能管家,我们就能真正地玩转智能生活了。
详细的介绍可以参考少数派的文章:玩转 IFTTT,互联网自动化也可以很简单
虽然IFTTT可以做很多事情,但是我们可以不用管它能做到什么事情,也不用管它的原理。因为我们这里只需要利用它给自己发通知,只需要完成利用它给自己发通知的就行了,按照下面的步骤做即可
首先链接IFTTT的webhooks服务,得获取api_key( 步骤见:IFTTT开启Webhooks)
image.pngevent
就是触发事件,也就是当你调用这个接口的时候,会触发IFTTT的动作(比如发邮件、发通知之类的),同时IFTTT还提供了三个可选值可以根据需要传
在IFTTT设置好event以及收到event进行的操作。
利用fastlane提供的IFTTT的action
ifttt(
api_key: "...",
event_name: "...",
value1: "foo",
value2: "bar",
value3: "baz"
)
Fastfile
文件代码:
default_platform(:ios)
platform :ios do
desc "***"
lane :pkg do |options|
# 获取当前目录下的plist文件中的版本号
version = get_info_plist_value(path: "./RealEstateManagement/Info.plist", key: "CFBundleShortVersionString")
configuration = options[:to]
# 打包
gym(
# 打包的target名称
scheme:"RealEstateManagement",
# 打包方式 企业版
export_method:"enterprise",
output_directory:"/Users/Javen/Desktop/fastlane",
output_name:"***_#{version}_#{configuration}_#{Time.now.strftime('%Y%m%d%H%M%S')}.ipa",
export_xcargs: "-allowProvisioningUpdates",
)
notifyMsg = ''
#上传蒲公英
if configuration == "test"
puts "\033[31m打包完成,正在上传测试蒲公英\033[0m\n"
pgyer(
api_key: "***",
user_key: "***"
)
notifyMsg = "
HD-CRE 统一版本测试版 已发布!
版本号: #{version}
iOS: http://www.pgyer.com/***
Android: http://www.pgyer.com/***"
end
if configuration == "release"
puts "\033[31m打包完成,正在上传正式蒲公英\033[0m\n"
pgyer(
api_key: "***",
user_key: "***"
)
notifyMsg = "
HD-CRE 统一版本正式版 已发布!
版本号: #{version}
iOS: http://www.pgyer.com/***
Android: http://www.pgyer.com/***"
end
puts notifyMsg
ifttt(
api_key: "***",
event_name: "pkg",
value1: notifyMsg,
# value2: "bar",
# value3: "baz"
)
end
end
我这里event_name是英文的,如果你设置的event是中文的话,由于是拼接在URL里面的,直接用中文会报错。需要对字符串进行转码,例如event_name: URI::escape("打包通知:")
到这里就完成了自动打包以及打包结果推送通知到手机所有内容。
还差安装Jenkins以及配合fastlane根据git标签一键打包的内容,效果如下图。这个内容比较多,后续另开一篇写。
image.png
网友评论