2、自动化打包(下)
上篇说了一些问题,这篇文章就来看一下怎么打包过程。这里就按照步骤来说一下。
#
需求按照我们APP现有的需求,先列举一下:
- 打包的版本号(版本号,编译版本号)必须为偶数(便于优先追踪线上、内测版BUG)
- 推送到
fir.im
,且成功后发送一条消息到钉钉 - 打包结束自动修改版本号、打标签并推送
- 由于可能会发测试版给外部用户安装,所以需要发送特定版本号给用户
- 需要支持打混淆分支,并将版本号同步非混淆分支
#
非混淆分支首先,按照常规步骤先走一遍,来看看是如何做的。
#
1. 解锁远程机器钥匙串因为我个人本身还是习惯直接通过 ssh
的,所以按照上一篇的加上
#
2. 拉取最新代码,重置本地修改毕竟我们打包肯定要用最新代码的吧,所以这一步做了一些事,且保证不会和我们上传的有区别:
- 获取到当前的分支名: 有几次发现某些马甲包无法自动识别分支,导致需要手动操作,其中
gsub
表示去除空行、换行符等 - 然后首先重置一次,再拉取服务器最新代码,其中
--no-edit
表示自动合并,否则可能拉取之后需要手动输入合并信息 - 最后执行
pod update
并再次重置,主要是有时候更新会导致工程文件变化。使用--no-repo-update
纯粹是因为网络不好
#
3. 修改版本号这里有点坑,fastlane
自带的那个 increment_build_number
有点坑,没办法使用。所以只能就手动读取、设置
- 这里做了个兼容,也就是当版本号为x.x.0,或者当前已经为偶数时,会做不同的处理,其他时候为正常+1
- #{ENV["PLISTPATH"]} 表示读取环境变量中
PLISTPATH
的值
#
4. 打包内购包这个步骤也就是指定了打包目录和打包类型,没什么好说的。
#
5. 上传、推送消息- 上传到
fir.im
并从消息中读取到 Release id,这样子可以拼接成指定版本的链接(之前我们都是手动去网站找的,累) - 如果没有这个功能的话,建议更新一下。或者直接用
fir publish -s #{ENV["FIRLINK"]} #{output_path}
- 拼接一条消息推送到钉钉上,方便测试人员下载
#
6. 收尾工作- 重置一次当前的修改,保证当前环境的干净
- 再拉取一次服务器代码。如果在打包时有同事提交了代码,就会导致提交时报错误
- 打标签。这里要注意标签不能重复,否则会报错误
- 再次修改版本号为开发版本号,也就是单数
- 提交,推送,结束
#
混淆分支由于马甲包为了上架做了些混淆工作,所以会创建一个单独的 分支名_appstore
的分支作为混淆分支,这样会便于同步最新代码
主要步骤:
#
完整代码整个打包脚本代码已经在上面贴出来了,其中也没有什么敏感信息。
#
环境变量文件文件保存到和
Fastfile
同级,名称应为.env.xxx
。命令记得带上fastlane fir --env xxx
#
Fastfile这里按照上篇的考虑,选择了从远程获取,这样可以始终保持最新版本。