Fastlane对iOS的持续集成(自动打包)
传统的打包方式:Archive——>勾选一堆选项及下一步,打包用途、app瘦身、证书——>导出ipa包——>打开蒲公英——>上传ipa包——>填写项目描述、安装密码——>发布测试包。
如果发布测试版本次数过多,比如临近上线修复BUG多次提交测试时,显然这种操作力不从心,如果掌握一键打包上传那就轻松太多,以下以Fastlane打包上传蒲公英为例讲一下Fastlane的用法。
概要
Fastlane是一套ruby编写的持续集成工具集。通过Fastlane可以实现自动打包、发布、截取app图片等工作,同时Fastlane可以通过执行ruby代码或者特定编写的脚本来实现这些工作,进而达到自动化构建版本并上传所指渠道。
Fastlane集成
1、ruby安装
大家都知道Fastlane是用ruby编写的,要想正确使用Fastlane必须先安装ruby。
首先检查一下ruby版本,装没装一查便知。
查看ruby版本ruby同步安装最新版本,不知道安装方法的小伙伴请自行百度,这里就不详细介绍了。
2、Fastlane安装
首先安装Xcode工具,我们这里虽然需要Fastlane自动打包,但其本质还是需要Xcode帮忙完成编译、打包,显然Xcode自带工具必不可少:
xcode-select--install
然后安装Fastlane:
sudo gem install fastlane--verbose
如果报错:
ERROR: While executing gem ... (TypeError)
no implicit conversionofnil intoString
则更新gem版本,然后再次安装Fastlane:
sudo gem update--system
如果报错:
ERROR:Whileexecuting gem ... (Gem::FilePermissionError)
You don't have write permissions for the /usr/bin directory.
则尝试使用如下命令进行安装:
sudo gem install-n /usr/local/binfastlane
如出现其他报错,百度工程师会告诉你答案或者直接官网寻求帮助!
检查Fastlane是否安装成功:
fastlane--version
3、Fastlane初始化配置
a、cd +空格+项目路径(xxx.xcodeproj同目录即可):
项目路径b、fastlane初始:
fastlane init
c、fastlane初始化结束后,会提示选择Fastlane的用途,这里我们选择自定义,即输入“4”:
Fastlane自定义d、安装蒲公英插件,安装后有个y/n的选择,选择y:
fastlane add_plugin pgyer
4、Fastlane自定义
路径:/Users/apple/Desktop/FastlaneTest/fastlane,用sublime打开编辑:
附上sublime下载地址:sublime
原始fastfile现做如下改动,注释很清晰,大家可以直接复制使用替换掉原始fastfile内容(这里发布adHoc包):
附上ruby教程:ruby
(注意:填入蒲公英平台拿到的api_key和user_key及所要打包项目的scheme)
default_platform(:ios)
# 指定持续集成对象的平台名称
platform :ios do
# 给lane命名:adHoc
lane :adHoc do|options|
branch = options[:branch]
# target区分提测环境
# puts是ruby中的输出,gets为获取终端中输入的文字。
puts "请选择要打的scheme:(1:FastlaneTest,else: 项目Target)"
scheme = STDIN.gets
# 通过判断输入内容,来区分一些打包信息,1后面加\n是因为在终端输入1再敲回车的时候scheme就包含了回车的内容,所以scheme == "1\n"
if scheme == "1\n"
# 项目中target的名称
schemeName = "FastlaneTest"
# 打包的用途(app-store, package, ad-hoc, enterprise, development).
export_method = "ad-hoc"
else
schemeName = "项目Target"
export_method = "enterprise"
end
#从蒲公英平台拿到的api_key和user_key.
api_key = "xxxxx"
user_key = "xxxxx"
#输入蒲公英上传ipa包后输入的版本描述信息
puts "请输入版本描述信息:"
desc = STDIN.gets
puts "开始打包 #{schemeName}"
# 开始打包
gym(
#指定scheme的名字
scheme: "#{schemeName}",
#输出的ipa名称
output_name:"#{schemeName}",
# 是否清空以前的编译信息 true:是
clean:true,
# 指定打包方式,Release 或者 Debug
configuration:"Release",
# 指定打包所使用的输出方式(app-store, package, ad-hoc, enterprise, development).
export_method:"#{export_method}",
# 访问钥匙串
export_xcargs: "-allowProvisioningUpdates",
# 指定输出文件路径
output_directory:"./fastlane/build",
# 配置证书
#export_options: {
#provisioningProfiles:{
#"com.xxxx.xxxx" => "xxxxxxxx",
#}
#}
)
puts "开始上传到蒲公英"
# 上传屏蔽
#deliver(force: true,
# 不上传屏幕截图
#skip_screenshots:true,
# 不上传元数据
#skip_metadata:true,
#)
#开始上传ipa到蒲公英,这里用的是蒲公英提供的插件
#update_description代表更新信息,password代表安装密码
pgyer(update_description: "#{desc}", api_key: "#{api_key}", user_key: "#{user_key}", password: "123456", install_type: "2")
#在上传完ipa后,打开ipa的存放文件夹,起到提示上传完成的作用
system "open ../fastlane/build"
end
5、Fastlane打包上传蒲公英
自检项目证书:
自动匹配证书同目录终端运行如下命令便可自动发包到对应蒲公英账号:
注意脚本文件执行格式:fastlane+脚本第一行中的platform名+脚本第二行中的lane名
fastlane ios adHoc
终端输入操作:
执行脚本 打包scheme输入”1“,版本描述”打包“上传蒲公英成功:
打包上传成功以上简单介绍一些基本用法,不足之处望指正!